1、多表联查(内联 INNER JOIN)
1 string productSqlStr = "SELECT * FROM " + 2 "product_info info " + 3 "INNER JOIN product_feed_info feed_info " + 4 "INNER JOIN product_pcb_info pcb_info " + 5 "INNER JOIN product_cover_info cover_info " + 6 "INNER JOIN product_laserweld_info laserweld_info " + 7 "INNER JOIN product_acc_info acc_info " + 8 "INNER JOIN product_press_info press_info " + 9 "INNER JOIN product_crash_info crash_info " + 10 "INNER JOIN product_air_info air_info " + 11 "INNER JOIN product_laserbar_info laserbar_info " + 12 "INNER JOIN product_reserve1_info reserve1_info " + 13 "INNER JOIN product_reserve2_info reserve2_info "; 14 15 16 string tableWhereStr = "where info.processCode=feed_info.processCode " + 17 "and " + 18 "info.processCode=pcb_info.processCode " + 19 "and " + 20 "info.processCode=cover_info.processCode " + 21 "and " + 22 "info.processCode=laserweld_info.processCode " + 23 "and " + 24 "info.processCode=acc_info.processCode " + 25 "and " + 26 "info.processCode=press_info.processCode " + 27 "and " + 28 "info.processCode=crash_info.processCode " + 29 "and " + 30 "info.processCode=air_info.processCode " + 31 "and " + 32 "info.processCode=laserbar_info.processCode " + 33 "and " + 34 "info.processCode=reserve1_info.processCode " + 35 "and " + 36 "info.processCode=reserve2_info.processCode and "; 37 38 string tmpProcessStr = string.Format("info.processCode='{0}';", processCodeList[i]); 39 40 string tmpSqlStr = productSqlStr + tableWhereStr + tmpProcessStr; 41 42 MySqlCommand tmpCommand = new MySqlCommand(tmpSqlStr, conn); 43 MySqlDataReader tmpReader = tmpCommand.ExecuteReader(); 44 45 while (tmpReader.Read()) 46 { 47 //rfid数据 48 //product_info 49 rfidPairStr = tmpReader.GetString("rfidIdentifier"); 50 userPairStr = tmpReader.GetString("user"); 51 pairFeedNum = tmpReader.GetInt16("feedNum"); 52 pairCarrierNum = tmpReader.GetInt16("carrierNum"); 53 54 } 55 56 tmpReader.Close();
2、将多表联查以后的数据导出cvs文件
1 string colStr="测试1,测试2,测试3,测试4,测试5"; 2 string[] colStrList = colStr.Split(','); 3 4 //导出csv的表头列名称 5 string str = string.Format("select '{0}','{1}','{2}','{3}','{4}' ", 6 colStrList[0], colStrList[1], colStrList[2], colStrList[3], colStrList[4]); 7 8 //导出csv表的列数据 9 string tableStr = string.Format("UNION SELECT info.processCode,feed_info.barCode1, pcb_info.pressVal, cover_info.pressVal, laserweld_info.subDeg 10 FROM product_info AS info 11 INNER JOIN product_feed_info AS feed_info 12 INNER JOIN product_pcb_info AS pcb_info 13 INNER JOIN product_cover_info AS cover_info 14 INNER JOIN product_laserweld_info AS laserweld_info 15 WHERE info.processCode = feed_info.processCode 16 and 17 info.processCode = pcb_info.processCode 18 and 19 info.processCode = cover_info.processCode 20 and 21 info.processCode = laserweld_info.processCode "); 22 23 string sqlStr; 24 string timeStr; 25 string endStr = string.Format("fields terminated by "," escaped by '' optionally enclosed by '' lines terminated by '\n' ;"); 26 27 {//需要挑选日期 28 timeStr = string.Format("AND info.time BETWEEN '{0}' AND '{1}' LIMIT 10000 ", startTimeStr, endTimeStr); 29 } 30 31 string outCSVStr = string.Format("INTO OUTFILE '{0}' ", filePath); 32 33 sqlStr = str + tableStr + timeStr + outCSVStr + endStr; 34 35 ExecuteQuery(sqlStr);
在使用上述代码导出到cvs文件的过程中会发生错误,权限不够,这是你需要修改数据库的相关权限,参照以下连接,修改本地系统账户,停止数据库,在重新运行即可。
MySQL导出数据到C盘目录时出现(OS errno 13 - Permission denied)异常的解决方案_Voryla的博客-CSDN博客