簡體   English   中英

使用UNION的MySQL查詢

[英]Mysql query using UNION

$sql = "SELECT `employee`.`employee_id`, `employee`.`employee_pre_code`, `employee`.`employee_code`, `employee`.`employee_name`, `employee`.`active`, `designation`.`designation_name`, `employeetype`.`employee_type_name`, `supervisor`.`supervisor_id`, `incharge`.`incharge_id`, `subsection`.`subsection_id`, `section`.`section_id`, `floor`.`floor_id`, `unit`.`unit_id`, `attendance_summery`.`present_days`,`attendance_summery`.`working_days` 
          FROM `employee` LEFT JOIN `designation` ON `employee`.`designation_id`=`designation`.`designation_id` 
          LEFT JOIN `employeetype` ON `employee`.`employee_type_id` = `employeetype`.`employee_type_id`
          LEFT JOIN `supervisor` ON `supervisor`.`supervisor_id` = `employee`.`supervisor_id` 
          LEFT JOIN `incharge` ON `incharge`.`incharge_id` = `supervisor`.`incharge_id` 
          LEFT JOIN `subsection` ON `subsection`.`subsection_id` = `incharge`.`subsection_id` 
          LEFT JOIN `section` ON `section`.`section_id` = `subsection`.`section_id` 
          LEFT JOIN `floor` ON `floor`.`floor_id` = `section`.`floor_id` 
          LEFT JOIN `unit` ON `unit`.`unit_id` = `floor`.`floor_id`    
          WHERE `employee`.`unit_id` = '1' AND `employee`.`active` = 1 
UNION
        SELECT `employee`.`employee_id`, `employee`.`employee_pre_code`, `employee`.`employee_code`, `employee`.`employee_name`, `employee`.`active`, `designation`.`designation_name`, `employeetype`.`employee_type_name`, `supervisor`.`supervisor_id`, `incharge`.`incharge_id`, `subsection`.`subsection_id`, `section`.`section_id`, `floor`.`floor_id`, `unit`.`unit_id`, `attendance_summery`.`present_days`,`attendance_summery`.`working_days` FROM `employee` 
          LEFT JOIN `attendance_summery` ON `attendance_summery`.`employee_id` = `employee`.`employee_id` 
          WHERE `attendance_summery`.`payment_period_id` = 36 
          ORDER BY `employee`.`employee_name` ASC";

$query = $this->db->query($sql);
return $query->result_array();

發生數據庫錯誤

錯誤編號:1054

“字段列表”中的未知列“ attendance_summery.present_days”

但是存在'attendance_summery.present_days'列。

我找不到查詢問題。

誰能幫忙。

在聯合的第一個查詢中未選擇Attenance_summery表。

您將不得不添加;

LEFT JOIN `attendance_summery` ON `attendance_summery`.`employee_id` = `employee`.`employee_id

到您的sql的第一個選擇。 您需要測試每個字段並添加它們。

您難道不認為attendance_summery表是select list一部分時,它應該是第一個查詢的FROM子句的一部分嗎? 我不能看到attendance_summery表在FROM CALUSE這是小姐!

我的主要問題是在聯接表中使用多個條件。 在加入時,最后增加了兩個條件attendance_summery桌子和關鍵字它連接,只有匹配的行$paymentPeriodId變量。 滿足了我想要的。 再次感謝Jerome AnthonyNitin Tripathi 我更新的查詢為:

$sql = "SELECT `employee`.`employee_id`, `employee`.`employee_pre_code`, `employee`.`employee_code`, `employee`.`employee_name`, `employee`.`active`, `designation`.`designation_name`, `employeetype`.`employee_type_name`, `supervisor`.`supervisor_id`, `incharge`.`incharge_id`, `subsection`.`subsection_id`, `section`.`section_id`, `floor`.`floor_id`, `unit`.`unit_id`, `attendance_summery`.`present_days`, `attendance_summery`.`working_days` "
      . "FROM `employee` "
      . "LEFT JOIN `designation` ON `employee`.`designation_id`=`designation`.`designation_id`"
      . "LEFT JOIN `employeetype` ON `employee`.`employee_type_id` = `employeetype`.`employee_type_id`"
      . "LEFT JOIN `supervisor` ON `supervisor`.`supervisor_id` = `employee`.`supervisor_id`"
      . "LEFT JOIN `incharge` ON `incharge`.`incharge_id` = `supervisor`.`incharge_id`"
      . "LEFT JOIN `subsection` ON `subsection`.`subsection_id` = `incharge`.`subsection_id`"
      . "LEFT JOIN `section` ON `section`.`section_id` = `subsection`.`section_id`"
      . "LEFT JOIN `floor` ON `floor`.`floor_id` = `section`.`floor_id`"
      . "LEFT JOIN `unit` ON `unit`.`unit_id` = `floor`.`floor_id`"
      . "LEFT JOIN `attendance_summery` ON (`attendance_summery`.`employee_id` = `employee`.`employee_id` AND `attendance_summery`.`payment_period_id` = $paymentPeriodId )"
      . "WHERE `employee`.`unit_id` = '1' AND `employee`.`active` = '1' "
      . "ORDER BY `employee`.`employee_name` ASC"; 

      $query = $this->db->query($sql);
      return $query->result_array();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM