• MariaDB多表联查以及导出cvs文件


    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博客

  • 相关阅读:
    SQL Server中事务transaction如果没写在try catch中,就算中间语句报错还是会提交
    EF Core中Key属性相同的实体只能被跟踪(track)一次
    Android--数据持久化之内部存储、Sdcard存储
    SQLite的介绍 操作Sqlite 具体实例
    Android提供了5种方式存储数据:
    Eclipse集成Tomcat的配置步骤实例
    如何实现上下左右键盘控制焦点使之落在相邻文本框或下拉框中-Web开发/JavaScript
    android布局
    android布局 及 布局属性
    Android开发之SD卡上文件操作
  • 原文地址:https://www.cnblogs.com/wanzaiyimeng/p/15759864.html
Copyright © 2020-2023  润新知