Таблица Фильтров Перед Применением Левого Соединения


у меня есть 2 таблицы, я хочу отфильтровать 1 таблицу до 2 таблицы соединены вместе.

Таблицы Customer:

    ╔══════════╦═══════╗
    ║ Customer ║ State ║
    ╠══════════╬═══════╣
    ║ A        ║ S     ║
    ║ B        ║ V     ║
    ║ C        ║ L     ║
    ╚══════════╩═══════╝

Таблица Записи:

   ╔══════════╦═══════╦══════════╗
   ║ Customer ║ Entry ║ Category ║
   ╠══════════╬═══════╬══════════╣
   ║ A        ║  5575 ║ D        ║
   ║ A        ║  6532 ║ C        ║
   ║ A        ║  3215 ║ D        ║
   ║ A        ║  5645 ║ M        ║
   ║ B        ║  3331 ║ A        ║
   ║ B        ║  4445 ║ D        ║
   ╚══════════╩═══════╩══════════╝

OK Я хочу, чтобы левый присоединиться, так что я получаю все записи из таблицы Customer независимо от того, есть ли связанные записи в таблице ввода. Однако я хочу фильтровать по категории D в таблице ввода перед соединением.

нужные Результаты:

   ╔══════════╦═══════╦═══════╗
   ║ Customer ║ State ║ Entry ║
   ╠══════════╬═══════╬═══════╣
   ║ A        ║ S     ║  5575 ║
   ║ A        ║ S     ║  3215 ║
   ║ B        ║ A     ║  4445 ║
   ║ C        ║ L     ║  NULL ║
   ╚══════════╩═══════╩═══════╝

если бы я должен был сделать следующий запрос:

   SELECT Customer.Customer, Customer.State, Entry.Entry
   FROM Customer
   LEFT JOIN Entry
   ON Customer.Customer=Entry.Customer
   WHERE Entry.Category='D'

это будет отфильтровывать последнюю запись.

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

Спасибо за любую помощь заранее!!

2   51   2013-02-26 01:43:01

2 ответа:

вам нужно передвигать до JOIN состояние:

SELECT c.Customer, c.State, e.Entry
FROM Customer c
LEFT JOIN Entry e
   ON c.Customer=e.Customer
   AND e.Category='D'

посмотреть SQL Скрипка с демо

вы также можете сделать:

SELECT c.Customer, c.State, e.Entry
FROM Customer AS c
LEFT JOIN (SELECT * FROM Entry WHERE Category='D') AS e
ON c.Customer=e.Customer

SQL Fiddle здесь