查询多个表

时间:2014-03-20 21:41:10

标签: mysql sql

我试图了解如何在一个查询中同时从多个表中提取信息(如果可能的话)。

我有3张桌子,我想知道是否有办法可以查询居住在加州的客户的所有产品名称?

Table:
    products

Fields:
    productOid
    productName
    companyOid


Table:
    customerData

Fields:
    customerOid
    firstName
    lastName
    state

Table:
    orders

Fields:
    orderNumber
    customerOid
    productOid

这会不会像INNER JOIN那样?

另外,我正在学习mySQL。

3 个答案:

答案 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,因为客户可能不止一次订购同一产品(或多个客户订购相同的产品),我假设您不想复制

我还假设您的州被表示为两个字符的列。

Read more about joins

答案 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'