mysql - 从表中进行多项选择

标签 mysql sql

我有两个这样定义的表。表位置用于存储地址

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/

相关文章:

mysql - 为什么索引器在sphinx中索引成功但不显示索引?

java - 使用 addEntity 获取 hibernate 中表的特定列

mysql - 列中的 CONCAT 搜索

sql - 使用内连接来连接 3 个表?

mysql - Ejabberd mnesia 数据库到 mysql

mysql - SQL Pro 将 DATETIME 转换为 DATE

SQL:使用 OR 加入列

java - 更新 DB2 表超时

mysql - 比较数据库或本地两个表之间的文本字符串

sql - 如何在具有重复值的列中添加索引以加快 postgresql 中的查询速度?