Соединить две таблицы с разным количеством строк в MySQL - PullRequest
0 голосов
/ 07 июня 2011

У меня есть две таблицы:

---------
|dogs   |
---------
|item_1 |
|       |
|       |
|       |
---------

---------
|cats   |
---------
|item_1 |
|item_2 |
|item_3 |
|item_4 |
---------

поэтому я хочу присоединиться к таблицам примерно так:

------------------
|dogs   | cats   |
------------------
|item_1 | item1  |
|NULL   | item2  |
|NULL   | item3  |
|NULL   | item4  |
------------------

Я использую условие во второй таблице, но если ничего не найдено, я все еще хочу получить этот единственный результат из первой таблицы примерно так:

------------------
|dogs   | cats   |
------------------
|item_1 | NULL   |
------------------

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

Я уже пробовал разные решения, но я не могу сохранить один результат из первой таблицы, если во второй таблице ничего не было найдено при использовании условия (я получаю 0 строк), или я получаю повторение item1 в первая таблица, когда мне действительно нужны Null.

Ответы [ 2 ]

1 голос
/ 07 июня 2011
select *
from dogs left outer join cats

Это даст вам всех собак и любых подходящих кошек.Это означает, что столбцы Cat могут быть нулевыми, а столбцы собак - нет.Это то, что вы ищете?

0 голосов
/ 07 июня 2011

Когда вы добавляете идентификаторы в обе таблицы, вы можете использовать SQL в левом соединении , чтобы сопоставить все данные из правой таблицы с левой таблицей.

Из W3Schools:

Ключевое слово LEFT JOIN возвращает все строки из левой таблицы (table_name1), даже если в правой таблице нет совпадений (table_name2).

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