@Mois

Как сделать выборку из двух таблиц по id, так что бы в случет отсутствия id во второй базе все равно был ответ?

Есть две таблицы, нужно по id вывести некоторые значения таблиц.

Есть вот такой код, делает как раз то что нужно.
SELECT a.name, a.img, b.price, b.discount FROM table1 as a, table2 as b WHERE a.id=40 AND b.id = 40

Но есть одна особенность! Вторая таблица (b) содержит не все значения id что есть первой (а). Нужно что бы ответ все равно был, хотя бы только со значениями первой таблицы.

table1                              table2
+--------+------------+---------+   +--------+------------+-------------+
| id     | name       | img     |   | id     | price      | discount    |
+--------+------------+---------+   +--------+------------+-------------+
| 1      | name1      | url1    |   | 1      | 123        | 9658        |
| 2      | name2      | url2    |   | 2      | 78954      | 5322        |
| 3      | name3      | url3    |   | 3      | 8562       | 9873        |
| 4      | name4      | url4    |   | 4      | 9648       | 6544        |
| 5      | name5      | url5    |   +--------+------------+-------------+
| 6      | name6      | url6    |
+--------+------------+---------+

И вот такой запрос вернет то что мне нужно: ХОРОШО
SELECT a.name, a.img, b.price, b.discount FROM table1 as a, table2 as b WHERE a.id=2 AND b.id = 2

+------------+---------+------------+-------------+
| name       | img     | price      | discount    |
+------------+---------+------------+-------------+
| name2      | url2    | 78954      | 5322        |
+------------+---------+------------+-------------+


И вот такой запрос вообще ничего не вернет: ПЛОХО
SELECT a.name, a.img, b.price, b.discount FROM table1 as a, table2 as b WHERE a.id=5 AND b.id = 5

А мне бы что то такого рода:
+------------+---------+------------+-------------+
| name       | img     | price      | discount    |
+------------+---------+------------+-------------+
| name5      | url5    | NULL       | NULL        |
+------------+---------+------------+-------------+


ОТВЕТ:
SELECT a.name, a.img, b.price, b.discount  FROM table1
	LEFT OUTER JOIN table2
	ON table1.id = table2.id
        WHERE table1.id = 5
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
slo_nik
@slo_nik
Доброй ночи.
WHERE a.id=5 OR b.id = 5
Или пробуйте использовать join

p.s. Про join и ещё немного
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы