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 子句终于来了...
我想从 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 子句终于来了...