2017-02-01 4 views
1

У меня есть две таблицы данных, верхняя таблица - Продукты, а нижняя таблица - Категории.Соедините таблицу до или после, за исключением

enter image description here

В таблице продуктов, у меня есть продукты, которые не имеют каждый CategoryId таких 3 и 7. Я нашел это с помощью этого заявления.

Select CategoryID 
From Categories 
Except 
Select CategoryID 
From Products 

Что дает этот результат

enter image description here

Я хотел бы включить CategoryName и описание в моем выше запросе. Могу ли я взять этот запрос и присоединиться к таблице, чтобы получить ожидаемый результат? Если нет, то как я могу использовать Outer Join для достижения моего конечного результата, а не Except?

+2

MySQL не поддерживает 'EXCEPT', поэтому мне интересно, какая база данных вы фактически использовали для генерации этих результатов. –

+0

Возможный дубликат [MySQL - Выбрать все, кроме того, что находится в этой таблице] (http://stackoverflow.com/questions/2106372/mysql-select-all-except-what-is-in-this-table) – philipxy

ответ

3

Я не знаю, какую базу данных вы использовали для генерации результатов, которые вы нам показали, поскольку AFAIK MySQL не поддерживает EXCEPT. Но ваш вопрос подотчетен; Вы можете сделать LEFT JOIN между двумя таблицами, чтобы прийти к такому же результату:

SELECT t1.CategoryID 
FROM Categories t1 
LEFT JOIN Products t2 
    ON t1.CategoryID = t2.CategoryID 
WHERE t2.CategoryID IS NULL  -- NULL indicates the Categories record did not match 
+0

Извините за недоразумение по тегам. Я был близок с моими собственными ответами, но я не знал, что «NULL» можно использовать в этом смысле. –

0
SELECT CategoryID,CategoryName,Description 
FROM Categories t1 
where CategoryId not in(select p.CategoryID from Products p) 
1

В SQL Вы можете использовать это. но это только идентификатор show только в таблице категорий. его не показывать Таблица продуктов

Select categoryName, Description 
From Products 
where id = (Select CategoryID 
      From Categories 
      Except 
      Select CategoryID 
      From Products) 
Смежные вопросы