我一直收到错误:
SELECT E.LastName, A.PUPoint, A.AccomodationID, P.pickup_Time, P.order_No
FROM ACCOMMODATION AS A, ENTITIES AS E
LEFT JOIN Pickup_Times AS P ON A.AccomodationID = P.AccomodationID
WHERE A.Entity_ID = E.Entity_ID
AND P.tour_ID = '11'
ORDER BY P.pickup_Time, P.order_No, E.LastName
我不确定如何解决此问题,因为SQL连接不是我的强项。我需要匹配ACCOMMODATION和ENTITIES表,因为它们结合了重要信息。然后我需要加入一个新表,如果这是可能的话,那就是Pickup_Times表。任何帮助将不胜感激。
答案 0 :(得分:0)
你可能已经根据评论解决了这个问题,但是让我试着提供这个来帮助你将来。编写查询时,您可以将多个表中的旧表混合为逗号分隔,然后添加左连接。我强烈建议把这些表格的标准放在JOIN条款中,不要混合为/ where。此外,您在新的pickup_times表中添加了一个左连接,但随后将AND P.tour_id子句添加到了实质上将其转换回INNER JOIN的位置...这意味着它只会返回存在于其中的记录。取件时间表。不知道这是不是你的意思。
这是一个重组的查询,也用于可读性嵌套缩进以显示表A->的关系。 B和B-> C(等......根据需要)。您可以将JOIN和辅助条件的条件直接添加到join子句中,并根据您的主(第一个)表添加WHERE子句条件......类似于。
SELECT
E.LastName,
A.PUPoint,
A.AccomodationID,
P.pickup_Time,
P.order_No
FROM
ACCOMMODATION AS A
JOIN ENTITIES AS E
on A.Entity_ID = E.Entity_ID
LEFT JOIN Pickup_Times AS P
ON A.AccomodationID = P.AccomodationID
AND P.tour_ID = '11'
ORDER BY
P.pickup_Time,
P.order_No,
E.LastName
通过将AND P.tour_id作为左连接条件的一部分,无论拾取时间如何,您仍然可以获得所有住宿。如果你只想要那些具有特定拾取时间并且tour = 11的人,那么只需删除" LEFT"加入的一部分。
所以,从上面的缩进中,你可以看到两个"实体"和" Pickup_Times"与" Accommodations"直接相关并且尊重每个别名。查询的可读性对于您的学习和写作都很重要,但对于那些跟随您的人来说,您可能已经离开了。