【发布时间】:2014-04-03 19:07:07
【问题描述】:
我有两张桌子,货物和客户。我想在货物中打印出客户的姓氏。表设置为:
shipments: shipNumber, shipperID, destID, size, weight
shipperID 和 destID 是客户表中的外键。
customers: id, lastName, street, city, state, zip.
我查询时想要的是这样的表:
shipNumber, shipperID(customers.id), customer.lastName, destID(customers.id), customer.lastName
shipperID 和 destID 不相同,因此 customers.lastName 字段应该只与它们之后的 id 字段相关。
由于显而易见的原因,我当前的查询不起作用:
SELECT shipments.shipNumber, shipments.shipperID, customers.lastName, shipments.destID,
(SELECT customers.lastName
FROM shipments, customers
WHERE shipments.destID = customers.id)
FROM shipments, customers
WHERE shipments.shipperID = customers.id;
我的子查询显然会打印多行,但我希望 destID 引用的客户的姓氏与船号相关,但我知道 mySQL 会从内到外查看查询。
样本数据:
shipments table
+------------+-----------+---------+------+--------+
| shipNumber | shipperID | destID | size | weight |
+------------+-----------+---------+------+--------+
| S12345-0 | W-100 | C-22315 | 12 | 12 |
| SYY89-4 | C-15572 | U-01002 | 12 | 12 |
+------------+-----------+---------+------+--------+
customers table
+---------+------------------+
| id | lastName |
+---------+------------------+
| S-01210 | Home Depot |
| S-18537 | Honda |
| S-13349 | NCR |
| C-15572 | GM |
| C-00122 | Delco |
| W-100 | Warehouse A |
| U-01002 | Wright State |
| W-210 | Warehouse B |
| U-00013 | AFIT |
| C-22315 | Northrop Grumman |
+---------+------------------+
我希望查询显示的内容:
shipNumber shipperID lastName destID lastName
S12345-0 W-100 Warehouse A C-22315 Northrop Grumman
这是提供给我的数据,因此用非姓氏数据填充的 lastName 列可能只是一个疏忽,所以就这样吧。
【问题讨论】:
-
你能提供一些示例数据吗?
-
@JohnRuddell 添加了示例数据和查询将产生的示例。由于有两批货物,查询实际上会打印出两行。
标签: mysql select reference subquery