2015-01-19 3 views
0

Я пытаюсь получить данные из двух таблиц. Первая таблица относится к подкатегории, а вторая - к изображению подкатегории. Существует только одна подкатегория, у которой есть изображение, а у остальных нет изображения. Я сделал следующий запрос таким образом, чтобы один, который не имеет изображения может быть с изображением по умолчаниюmysql query не возвращает все результаты при использовании case

select s.name,s.id,s.level,CASE WHEN g.photo_url IS NULL THEN 'no-image.png' ELSE g.photo_url END AS photo_url 
from sub_category s,gallery g 
where g.main_id=s.id and g.type_id='9' and s.category_id='1' and s.level='1' 

Но она возвращается одна строки (тот, который имел изображение) и остальные подкатегории даже не показанный. Предполагалось показать 7 подкатегорий с изображением, а остальные из них - по умолчанию для всех тех, у кого нет изображения в таблице галереи.

+0

Ваш неявный 'INNER JOIN' ограничивает ваш выход. Вместо этого используйте 'LEFT OUTER JOIN'. –

ответ

1

вам нужно использовать left join

также использовать явный синтаксис объединения.

select s.name,s.id,s.level, 
CASE WHEN g.photo_url IS NULL THEN 'no-image.png' 
ELSE g.photo_url END 
AS photo_url 
from sub_category s 
left join gallery g 
on g.main_id=s.id 
on g.type_id='9' 
where s.category_id='2' 
and s.level='1' 
+0

Благодарим вас за ответ. Но при его появлении mysql error, где слева, начинается – user1001176

+0

@ user1001176, после этого осталась дополнительная запятая, попробуйте теперь – radar

+0

удаление запятой теперь дает подкатегорию всех категорий. Мне нужны все подкатегории с идентификатором категории 1. – user1001176

Смежные вопросы