MySQL - как присоединиться к несуществующему индексу? - PullRequest
0 голосов
/ 11 декабря 2010

У меня есть таблица в моей БД под названием ORDERS, и она выглядит так:

ID_section (int), ID_price (int), ID_city (int), ID_company (int)

И я хочу использовать метод JOIN для присвоения имен идентификаторам.

Что бы я сделал, это:

SELECT * FROM ORDERS 
JOIN sections ON sections.id=orders.ID_section 
JOIN prices ON prices.id=orders.ID_price 
JOIN cities on cities.id=orders.ID_cities 
JOIN companies ON companies.id=orders.ID_company

Но дело в том, что в таблицу ORDERS можно вставить значение 0, а это значит - все разделы / цены / города / компании, но когда я запускаю свой запрос, только значения, в которых их ID существуют в другом таблица показывает вверх.

Есть идеи? Спасибо.

Ответы [ 3 ]

1 голос
/ 11 декабря 2010

Если я правильно понимаю ваш вопрос и, например, наличие ID_section = 0 означает, что заказ принадлежит всему разделу, то следующий запрос должен помочь.

SELECT * FROM ORDERS 
JOIN sections ON sections.id=orders.ID_section OR orders.ID_section = 0 
JOIN prices ON prices.id=orders.ID_price OR orders.ID_price = 0
JOIN cities on cities.id=orders.ID_cities OR orders.ID_cities = 0
JOIN companies ON companies.id=orders.ID_company OR orders.ID_company = 0

Если, с другой стороны, вы хотите получить все заказы независимо от того, связаны ли с ними разделы, цены и т. Д., То достаточно поставить LEFT JOIN там, где у вас JOIN. (Но эта ситуация не является результатом вашего вопроса! Я добавил его только потому, что люди, кажется, это понимают.)

0 голосов
/ 11 декабря 2010

Поэкспериментируйте с LEFT и RIGHT OUTER JOIN с, и вы сможете понять, что вам нужно сделать.В основном, LEFT или RIGHT OUTER JOIN вставит NULL в столбцы, в которых нет данных, но все еще выполняются объединения.

В сети есть различных ресурсов , которые объясняют это.

0 голосов
/ 11 декабря 2010

Используйте LEFT JOIN вместо JOIN (сокращение от INNER JOIN)

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