Как вы присоединяетесь к двум таблицам MySQL, где данные НЕ находятся в другой таблице? - PullRequest
3 голосов
/ 16 декабря 2008

Например, у меня есть стол для домашних животных и стол для потерянных животных. Я хочу получить всех питомцев, которые НЕ потерялись, с одним присоединением и без подвыборов. Это возможно? Типичное объединение возвращает только результаты, которые находятся в обеих таблицах.

Ответы [ 4 ]

7 голосов
/ 16 декабря 2008

Вы описываете внешнее соединение по сравнению со стандартным внутренним соединением. Google или проверьте свою документацию - я уверен, вы найдете много примеров. :)

ВЫБРАТЬ * ИЗ ПЕТЕЙ КАК Р
LEFT OUTER JOIN потерянные домашние животные, как LP
ON p.name = lp.name
ГДЕ lp.id НЕДЕЙСТВИТЕЛЕН

3 голосов
/ 16 декабря 2008
SELECT PETS.NAME
FROM PETS
   LEFT OUTER JOIN LOST_PETS
     ON PETS.PET_ID = LOST_PETS.PET_ID
WHERE LOST_PETS.PET_ID IS NULL;
2 голосов
/ 16 декабря 2008

Можно, да, сказать:

SELECT *
FROM pets LEFT OUTER JOIN pets-lost ON pets.id = pets-lost.id
WHERE pets-lost.id IS NULL;
0 голосов
/ 16 декабря 2008

Почему бы не сделать, где не существует (выберите * из Lost ...)? Это суб-выбор, но я не понимаю, почему это проблема.

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