MySQL:从3个表中选择

时间:2011-08-09 18:47:35

标签: mysql sql

我有以下查询:

 SELECT 
DISTINCT sites.site_id,
sites.site_name,
sites.site_url,
earnings.cust_id
FROM 
sites, 
earnings
WHERE sites.site_id = earnings.site_id AND sites.site_id IN('8', '1666')

该查询非常好地提供了所要求的信息。它返回两行,一个用于站点8,另一行用于站点1666,其中包含来自这些表的信息。

现在,我希望cust_id号码用于从另一个表(比如表客户)中选择它们存储在id中,以及其他信息如名称,姓氏等。

基本上我需要的是扩展该查询以使用获得的ID从表客户中提取客户名称和姓氏。

1 个答案:

答案 0 :(得分:4)

从两张桌子获得信息的方式相同。添加逗号,添加第三个表名,并将关系添加到WHERE子句,就像使用前两个表一样。

SELECT 
DISTINCT sites.site_id,
sites.site_name,
sites.site_url,
earnings.cust_id,
customers.name,
customers.last_name
FROM 
sites, 
earnings,
customers
WHERE sites.site_id = earnings.site_id AND sites.site_id IN('8', '1666') AND customers.id = earnings.cust_id

我认为写出JOIN更清楚:

SELECT
  sites.site_id,
  sites.site_name,
  sites.site_url,
  earnings.cust_id,
  customers.name,
  customers.last_name
FROM
  sites
INNER JOIN
  earnings
ON
  earnings.site_id = sites.site_id
INNER JOIN
  customers
ON
  customers.id = earnings.cust_id
WHERE
  sites.site_id IN (8, 1666)
GROUP BY
  sites.site_id