我有两个这样定义的表。表位置用于存储地址
locations
---------
id
addr
city
zip
name
另外一张表为每个条目引用位置表中存储的两个位置地址
packages
---------
id
client_id
pick_id <-- this id is for the location address for pick
drop_id <-- this id is for the location address for drop
我想回去
location.name, location.addr, location.city, location.id for pick
location.name, location.addr, location.city, location.id for drop
都针对给定的 client_id
我目前有这个sql
Select
packages.status,
locations.name,
locations.address,
locations.zip,
locations.city,
locations.id
From
packages Inner Join
locations On packages.drop_id = locations.id And packages.client_id = 5
但结果为空行。 谁能指出我的错误?
最佳答案
您似乎只反对位置表,而不是每个放置和拾取位置。
要同时使用以下内容:-
Select
packages.status,
PickLocation.name,
PickLocation.address,
PickLocation.zip,
PickLocation.city,
PickLocation.id,
DropLocation.name,
DropLocation.address,
DropLocation.zip,
DropLocation.city,
DropLocation.id
From packages
INNER JOIN locations AS PickLocation ON packages.pick_id = PickLocation.id
INNER JOIN locations AS DropLocation ON packages.drop_id = DropLocation.id
WHERE packages.client_id = 5
如果没有返回任何记录,则表明客户 ID 5 没有包裹,或者投递或取货地点不在位置表中。如果是后者,则尝试使用 LEFT OUTER JOIN 而不是 INNER JOIN
关于mysql - 从表中进行多项选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17320566/