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



у меня есть 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.



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

626   2  

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 здесь

Comments

    Ничего не найдено.