Php sql左联接不工作

Php sql左联接不工作,php,mysql,left-join,Php,Mysql,Left Join,我想从表inv\u site\u item中获取传输的项目总数,其中inv\u sie\u item中的'item\u id'='item\u code>中的inv\u items中,我也从打包表中获取打包,该表在这个查询中运行良好inv\u site\u item给出了问题 错误为:未知列“字段列表”中的“inv\u site\u item.site\u id” $where .= " AND inv_items.item_code = $item_code"; $query = "SELE

我想从表
inv\u site\u item
中获取传输的项目总数,其中
inv\u sie\u item中的'item\u id'='item\u code>中的
inv\u items
中,我也从打包表中获取打包,该表在这个查询中运行良好
inv\u site\u item
给出了问题

错误为:
未知列“字段列表”中的“inv\u site\u item.site\u id”

$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 . ""; 

您必须改用表别名
transfer
,因此:

inv_site_item.site_id
transfer.site_id


还有
inv\u site\u项。location\u site\u id
将被
传输。location\u site\u id
您必须使用表别名
传输
,因此:

inv_site_item.site_id
transfer.site_id


还有
inv\u site\u item.location\u site\u id
transfer.location\u site\u id

如果可能,您应始终检查以打印查询。您的“WHERE”子句填充不正确

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“WHERE item_code!=”附近使用的正确语法在1号线

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

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

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

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

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“WHERE item_code!=”附近使用的正确语法在1号线

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

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

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


您必须改用表别名
传输
,因此:

inv_site_item.site_id
transfer.site_id

还带有
inv\u site\u item.location\u site\u id
transfer.location\u site\u id

并更改
$where.=“和库存项目。项目项目代码=$item\u代码”

$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 !=' '"; 

将查询语句更改为


对于letnot empty子句,您必须使用您的表别名
transfer
,因此:

inv_site_item.site_id
transfer.site_id

还带有
inv\u site\u item.location\u site\u id
transfer.location\u site\u id

并更改
$where.=“和库存项目。项目项目代码=$item\u代码”

$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 !=' '"; 

将查询语句更改为


因为letnot empty子句终于出现了…

我刚刚做了,它在我的查询编辑器中工作,但在我的浏览器中不工作,它给出了错误:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“WHERE item_code!=”附近使用的正确语法在第1行,您的美元等于多少?可以打印查询吗?是的,我在我的问题中提到,这是从不同的输入中获取不同的内容,例如,如果给定了项目代码,那么$where将是$where.=“和inv_项目。项目代码=$item_代码”;同样,如果(!empty($item_code)){$where.=“and inv_items.item_code=$item_code”;}elseif(!empty($item_name)){$where.=“and inv_items.name”;}elseif(!empty($item_cost)){$where.=“and inv_items.current_cost=$item_cost”,则有包装id和成本}elseif(!empty($item_packing)){$where.=“AND inv_items.packing=$item_packing”;}@mohsin轻松打印$where并查看输出我刚刚做了,它在我的查询编辑器中工作,但在我的浏览器中不工作,它给出错误:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“WHERE item_code!=”附近使用的正确语法在第1行,您的美元等于多少?可以打印查询吗?是的,我在我的问题中提到,这是从不同的输入中获取不同的内容,例如,如果给定了项目代码,那么$where将是$where.=“和inv_项目。项目代码=$item_代码”;同样,如果(!empty($item_code)){$where.=“and inv_items.item_code=$item_code”;}elseif(!empty($item_name)){$where.=“and inv_items.name”;}elseif(!empty($item_cost)){$where.=“and inv_items.current_cost=$item_cost”,则有包装id和成本;}elseif(!empty($item_packing)){$where.=“AND inv_items.packing=$item_packing”}@mohsin轻松打印$where并查看输出