我试图了解如何在一个查询中同时从多个表中提取信息(如果可能的话)。
我有3张桌子,我想知道是否有办法可以查询居住在加州的客户的所有产品名称?
Table:
products
Fields:
productOid
productName
companyOid
Table:
customerData
Fields:
customerOid
firstName
lastName
state
Table:
orders
Fields:
orderNumber
customerOid
productOid
这会不会像INNER JOIN那样?
另外,我正在学习mySQL。
答案 0 :(得分:1)
您需要使用内部联接。
SELECT DISTINCT p.productName
FROM orders o
INNER JOIN customerData c ON o.customerOid = c.customerOid
INNER JOIN products p ON o.productOid = p.productOid
WHERE c.state = 'CA';
我在这里使用DISTINCT,因为客户可能不止一次订购同一产品(或多个客户订购相同的产品),我假设您不想复制
我还假设您的州被表示为两个字符的列。
答案 1 :(得分:0)
你可以再使用一次,但我会这样写:
SELECT DISTINCT p.productName
FROM
orders o INNER JOIN products p
ON o.productOid = p.productOid
WHERE
o.customerOid IN (SELECT customerOid
FROM customerData
WHERE state = 'California')
它可能比连接更乏味,但它更具可读性。
答案 2 :(得分:0)
这显示了CA客户订购的产品:
SELECT p.productName
FROM orders o
INNER JOIN products p ON o.productOid = p.productOid
INNER JOIN customerData c ON o.customerOid = c.customerOid
WHERE c.state = 'CA'