Mysql - вернуть все результаты из таблицы A и выборочно объединить с таблицей B - PullRequest
0 голосов
/ 10 июня 2011

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

по умолчанию:

+----+--------+
| id | colour |
+----+--------+
| 1  | red    |
| 2  | green  |
| 3  | yellow |
+----+--------+

custom:

+--------+--------------+---------+
| linkId | customcolour | ownerId |
+--------+--------------+---------+
| 1      | bright red   | 1       |
| 2      | garden green | 2       |
+--------+--------------+---------+

Я хочу вернуть все из таблицы по умолчанию, а затем получить любую связаннуюcustomcolours (через linkId).Я использую запрос:

SELECT a.colour, b.customcolour 
FROM default a 
LEFT JOIN custom b ON a.id = b.linkId
WHERE (b.ownerId IS NULL OR b.ownerId = 1) 
GROUP BY a.id ORDER BY a.colur

Однако, когда я присоединяюсь к пользовательской таблице, он не выберет пользовательский linkId 2, потому что ownerId не равен 1 или NULL.Есть ли способ вернуть строку default.id = 2 и просто установить customercolour как NULL, не добавляя его в таблицу?

1 Ответ

1 голос
/ 10 июня 2011

Вам необходимо переместить критерии WHERE в объединение

SELECT a.colour, b.customcolour 
FROM default a 
LEFT JOIN custom b ON a.id = b.linkId AND (b.ownerId IS NULL OR b.ownerId = 1)
GROUP BY a.id ORDER BY a.colur
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...