fogersp
@fogersp

SELECT и JOIN при отсутствии значения в таблице?

Здравствуйте. Как выбрать из двух таблицы данные джойном, но из первой таблицы все данные, а из второй по id из первой: если такая запись найдена, то ее, а если нет, то 0. Вроде бы можно использовать IF или IFNULL, но что-то не так получается

UPD: Пример таблицы на sqlfiddle: sqlfiddle.com/#!9/f30a13/10

select descr, above, if(count(discount) > 0, discount, 0) from time_discounts left join categories on time_discounts.cat_idx = categories.cat_idx  where categories.tar_id = 87 and time_discounts.tar_id = 87;

Так находит только одну запись, а не все. Т.е. нужно вывести примерно так:

| descr | above | discount |
| Test 1 | 2.33 | 1.23 |
| Test 2 | 42.11 | 20.45 |
| Test 3 | 19.32 | 0 | <= такой cat_idx с таким tar_id в таблице time_discounts нет, а в categories есть
| Test 4 | 10.50 | 5.86 |
  • Вопрос задан
  • 1597 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
LEFT JOIN выбирает все записи из левой таблицы и соответствующие им из правой. Так что либо используйте RIGHT JOIN, либо поменяйте порядок соединения таблиц.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
select IFNULL(discount, 0) from ...
Ответ написан
Ваш ответ на вопрос

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

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