sql 左连接不起作用

sql left join not working

我想从 table inv_site_item where 'item_id' in inv_sie_item = 'item_code' in inv_items 获取总转移项目,我也从 packing table 中获取包装在此查询中很好,只有 inv_site_item 出现问题。

错误是:Unknown column 'inv_site_item.site_id' in 'field list'

$where .= " AND inv_items.item_code = $item_code";

$query = "SELECT inv_items.*,packing.name_en `packing_name`,"
    . " COUNT(inv_site_item.site_id) `transfer_out`, COUNT(inv_site_item.location_site_id) `transfer_in`  FROM inv_items"
            . " left join "
            . "inv_packing as packing on packing.id=inv_items.packing"
            . " left join "
            . "inv_site_item as transfer on transfer.item_id=inv_items.item_code"
    . " WHERE item_code !='' " . $where . ""; 

您必须使用您的 table 别名 transfer,所以:

变化自

inv_site_item.site_id

transfer.site_id

也与 inv_site_item.location_site_id 成为 transfer.location_site_id

对于任何与查询相关的错误,如果可能,您应该始终检查以打印查询。您的 "WHERE" 子句未正确填充。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE item_code !=''' at line 1

这意味着您的查询在 "WHERE" 子句附近出现错误。

打印您的 $query 变量以查看构建的实际查询,然后您将能够找到错误并修复它。

<?php echo "<pre>"; print_r($query); echo "</pre>"; ?>

您必须使用您的 table 别名 transfer,所以:

变化自

inv_site_item.site_id

transfer.site_id

也与inv_site_item.location_site_id成为transfer.location_site_id

并且还将 $where .= " AND inv_items.item_code = $item_code"; 更改为

$where .= "inv_items.item_code = $item_code";

将查询语句更改为

$query = "SELECT inv_items.*,packing.name_en `packing_name`,"
    . " COUNT(transfer.site_id) `transfer_out`, COUNT(transfer.location_site_id) `transfer_in`  FROM inv_items"
            . " left join "
            . "inv_packing as packing on packing.id=inv_items.packing"
            . " left join "
            . "inv_site_item as transfer on transfer.item_id=inv_items.item_code"
    . " WHERE " . $where . " AND item_code !=' '"; 

For let not empty 子句终于来了...