У меня есть следующие модели данных:Как сделать подзапрос в GROUP_CONCAT
`title`
- id
- name
`version`
- id
- name
- title_id
`version_price`
- id
- version_id
- store
- price
А вот пример данных:
`title`
- id=1, name=titanic
- id=2, name=avatar
`version`
- id=1, name="titanic (dubbed in spanish)", title_id=1
- id=2, name="avatar directors cut", title_id=2
- id=3, name="avatar theatrical", title_id=2
`version_price`
- id=1, version_id=1, store=itunes, price=$4.99
- id=1, version_id=1, store=google, price=$4.99
- id=1, version_id=2, store=itunes, price=$5.99
- id=1, version_id=3, store=itunes, price=$5.99
Я хочу построить запрос, который даст мне все заголовки, которые имеют версию version на iTunes, но не на Google. Как мне это сделать? Вот то, что я до сих пор:
select
title.id, title.name, group_concat(distinct store order by store)
from
version inner join title on version.title_id=title.id inner join version_price on version_price.version_id=version.id
group by
title_id
Это дает мне GROUP_CONCAT, который показывает мне, что у меня есть:
id name group_concat(distinct store order by store)
1 Titanic Google,iTunes
2 Avatar iTunes
Но как бы я построить запрос включить ли элемент на Google (используя случай заявление или что бы ни необходимости)
id name group_concat(distinct store order by store) on_google
1 Titanic Google,iTunes true
2 Avatar iTunes false
Это будет в основном будет делать group_concat LIKE '%google%'
вместо нормальной, где положение.
Вот ссылка для SQL скрипку текущего запроса у меня есть: http://sqlfiddle.com/#!9/e52b53/1/0
'где магазин <> 'google''? это не задача group_concat для фильтрации вещей для вас, за исключением «отличительного» материала. фильтрация выполняется в предложениях 'where'. –
что вы ожидаете получить? '1 | Титаник | Google, iTunes' или просто '1 | Титаник | iTunes'? – Alex
@MarcB посмотрите пожалуйста обновленный вопрос. – David542