Есть две таблицы, нужно по 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