Php 1054-使用左联接的未知列
我正在努力使这个SQL查询正常工作。 我试图在一个查询中获取所需的信息,因为我获得的数据将使用PHP转换为CSV 我的以下SQL查询是:Php 1054-使用左联接的未知列,php,mysql,sql,Php,Mysql,Sql,我正在努力使这个SQL查询正常工作。 我试图在一个查询中获取所需的信息,因为我获得的数据将使用PHP转换为CSV 我的以下SQL查询是: SELECT C.customer_ID, C.l_Name AS Surname, C.f_Name AS 'First Name', C.travel_Date, T.tour_Name, S.f_Name AS Staff, S.l_Name AS Staff_Surname, PA.pay_Method FROM Customers AS C
SELECT C.customer_ID, C.l_Name AS Surname,
C.f_Name AS 'First Name', C.travel_Date,
T.tour_Name,
S.f_Name AS Staff, S.l_Name AS Staff_Surname,
PA.pay_Method
FROM Customers AS C
LEFT JOIN Tour AS T ON C.trip_Taken = T.tour_ID
LEFT JOIN Staff AS S ON O.staff_ID = S.staff_ID
LEFT JOIN Payment AS PA ON O.pay_ID = PA.pay_ID
WHERE C.customer_ID NOT IN (SELECT O.customer_ID
FROM Customers AS C, Orders AS O
WHERE C.travel_Date >= '2014-07-08 00:00:00'
AND C.travel_Date <= '2014-07-08 23:59:59' AND C.customer_ID = O.customer_ID )
我在“on子句”中得到了这个错误1054-未知列“O.staff\u ID”,我不确定如何着手修复它。任何帮助都将不胜感激。在您编写的某个时候运行MySQL 5.0和最新的PHP
LEFT JOIN Staff AS S ON O.staff_ID = S.staff_ID
但O是在括号范围内定义的。在中更改您的查询
LEFT JOIN Staff AS S ON Orders.staff_ID = S.staff_ID
你从另一个答案中得到了错误的原因。如果你真的想加入Orders,那就在Orders中加入另一个join子句,如下所示
FROM Customers AS C
LEFT JOIN Tour AS T ON C.trip_Taken = T.tour_ID
LEFT JOIN Orders AS OO ON C.customer_ID = OO.customer_ID <--Included
LEFT JOIN Staff AS S ON OO.staff_ID = S.staff_ID <-- Join with Orders
LEFT JOIN Payment AS PA ON OO.pay_ID = PA.pay_ID
报告的问题是由于O别名是在子查询中引入的,因此不能在外部联接中使用 考虑取消子查询,这也解决了初始问题 选择 来自客户的C 在C.customer\u ID=O.customer\u ID上以O的身份加入订单-此处加入/别名 在C.trip\u Take=T.Tour\u ID上以T的身份左键加入巡更 左键作为S ON O.Staff\u ID=S.Staff\u ID加入Staff-因此可以在此处使用 在O.pay\u ID=PA.pay\u ID上以PA身份加入付款 -提升子查询条件 -FWIW,情况看起来很奇怪:客户只有一个旅行日期? 其中非C.travel_Date>=“2014-07-08 00:00:00”
和C.travel_日期在子查询中引入O,在联接期间无法访问该日期。我会在..中删除。。完全选择并用[Other]联接替换它。@user2864740您建议我如何写这篇文章?SQL不是我的强项,lolI试过了,最后我得到了1054-未知列“Orders.staff\u ID”in“on”子句“Yes the Orders table and column staff\u ID exist可以运行每个表的show create table吗?这样我们就可以重新创建模式了?谢谢你的帮助。这将引导我走上正确的道路,以获得正确的查询。再次感谢你的帮助。