3 таблицы объединяются, считая нули

0

У меня есть ситуация, когда у меня три таблицы; дилеров, автомобилей и складов. Дилерство связано с автомобилем и автомобилем, связанным со складом. Как можно построить запрос mysql для определения суммы количества транспортных средств на складах, которые не были отправлены дилеру?

Вот таблицы данных:

Dealer
Id   |   name     |                           
_____|____________|
D1   |  Dealer_1  |
D2   |  Dealer_2  |
D3   |  Dealer_3  |
D4   |  Dealer_4  |


Car
Id   |    name   | Dealer_id |
_____|___________|___________|
C1   |  auto_1|  |   D4      |
C2   |  auto_2   |   D4      |
C3   |  auto_3   |   null    |
C4   |  auto_4   |   D1      |
C5   |  auto_5   |   null    |
C6   |  auto_6   |   D3      |


Warehouse
Id   |    name   | Car_id    | vehical_count |
_____|___________|___________|_______________|
W1   | storage_1 |   C2      |   22          |
W2   | storage_2 |   C3      |   43          |
W3   | storage_3 |   C5      |   18          |
W4   | storage_4 |   C6      |   15          |
W5   | storage_5 |   C1      |    8          |
W6   | storage_6 |   null    |    2          |
W7   | storage_7 |   C3      |   37          |
W8   | storage_8 |   null    |   10          |

Спасибо!

  • 0
    Я не понимаю ваши данные. Складская таблица четко показывает какой-то инвентарь, но с чем мы должны сравнивать этот инвентарь?
  • 0
    Взгляд на warehouse и колонку vehicle_count заставляет меня поверить, что car означает не отдельный автомобиль, а тип. Однако, глядя на car я не вижу там никакого количества транспортных средств (и также чувствую, что дилер там неуместен, скорее должен быть стол доставки или что-то в этом роде). Это означает, что автомобиль должен быть индивидуальным транспортным средством. Или, если не в том, как узнать, сколько у дилера? (Edit: Mhh, только что понял, что это по сути то же самое, что @TimBiegeleisen упомянул, но более подробно изложил. Я оставлю это из-за последнего.)
Показать ещё 4 комментария
Теги:

1 ответ

1
Лучший ответ

Это должно дать вам складские автомобили не на автомобильном столе или на столике автомобиля без назначенного дилера.

SELECT
    SUM(w.vehical_count)
FROM
    Warehouse w
    LEFT OUTER JOIN Car c ON c.Id=w.Car_id
WHERE
    c.Dealer_id IS NULL     
  • 0
    Нет c.Car_id (я думаю, вы имели в виду w.Car_id ), но эта часть WHERE в любом случае избыточна, так что вы можете удалить ее.
  • 0
    DormantVehicles вызывает ошибку в MySQL, но удаление его очищает запрос. Спасибо Росс. Я думаю, что это правильно.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню