Соединение таблицы поиска SQL с таблицей данных - PullRequest
4 голосов
/ 06 января 2010

У меня есть справочная таблица, скажем, города с полями CityId, CityName

CityId   CityName
1        New York 
2        San Francisco
3        Chicago

У меня есть таблица заказов, в которой есть поля: CityId, CustId, CompletedOrders, PendingOrders

CityId CustId CompletedOrders PendingOrders
1       123   100             50
2       123   75              20

Мне нужна таблица / отчет, в котором перечислены детали заказов данного клиента во всех городах, то есть результат, который мне нужен:

CityId CityName      CustId CompletedOrders PendingOrders
1      New York      123    100             50
2      San Francisco 123    75              20
3      Chicago       123    0               0

Как это сделать?

Ответы [ 2 ]

9 голосов
/ 06 января 2010
SELECT
  c.CityId
  c.CityName
  o.CustId,
  o.CompletedOrders
  o.PendingOrders
FROM cities c
LEFT JOIN orders o ON ( c.CityId = o.CityId )

Это вернет все строки, которые вы хотите, но для строк, которые не существуют в details, он вернет NULL значения, так что вы получите:

CityId CityName      CustId CompletedOrders PendingOrders
1      New York      123    100             50
2      San Francisco 123    75              20
3      Chicago       123    NULL            NULL

Решение получить 0 зависит от вашей базы данных. С MySQL используйте IFNULL, с Oracle используйте NVL.

1 голос
/ 06 января 2010

попробуйте

select c.CityId,c.CityName,o.CustId,o.CompletedOrders,o.PendingOrders

from orders Left join cities 

on o.CityId = c.CityId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...