MySQL: выбор из 3 таблиц - PullRequest
       4

MySQL: выбор из 3 таблиц

0 голосов
/ 09 августа 2011

У меня есть следующий запрос:

 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 использовался для выбора из другой таблицы (скажем, таблицы клиентов), где они хранятся по идентификатору и где другая информация, такая как имя, фамилия и т. Д.

По сути, мне нужно расширить этот запрос, чтобы извлечь имя и фамилию клиента из таблицы клиентов, используя полученные идентификаторы.

1 Ответ

4 голосов
/ 09 августа 2011

Точно так же, как вы получили информацию из двух таблиц.Добавьте запятую, добавьте третье имя таблицы и добавьте отношение к вашему предложению 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

Я думаю, что более понятно выписать JOINs:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...