SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.08.2012 19:17:44

longi
Участник
Зарегистрирован: 06.08.2012
Сообщений: 1

Нужно в запросе добавить поле со значением определяемым в запросе.

Всем привет, я вот уже минут 30 думаю и ковыряю инет, но так ничего и не наковырял... Нужна помощь))

Начнем со структуры:

Имеется таблица с заведениями, каждое заведение относится к какойто группе
[CODE=js]
institutes {
   id,
   title,
   group_id
   ...
   ...
}
[/CODE]

так же есть таблица избранного, в которой хранятся id потребителя и id заведений
[CODE=js]
consumer_favorite {
   institute_id,
   consumer_id
}
[/CODE]

так вот задача:

сначала я делаю вот так:
[CODE=mysql]
SELECT GROUP_CONCAT(DISTINCT `institute_id`) FROM `consumer_favorite` WHERE `consumer_id` = 1
[/CODE]

тоесть получаю весь список избранных заведений(id), одного потребителя через запятую. Вот например: 1,3,5,12,20

потом делаю вот так
[CODE=mysql]
SELECT * FROM `institute` WHERE `group_id` = 2 ORDER BY `title`
[/CODE]

тоесть получаю весь список заведений которые находятся в какойто группе и както отсортированны.

[table]
[tr]
[th]id[/th]
[th]title[/th]
[th]group_id[/th]
[/tr]
[tr]
[td]1[/td]
[td]Заведение 1[/td]
[th]2[/th]
[/tr]
[tr]
[td]2[/td]
[td]Заведение 2[/td]
[th]2[/th]
[/tr]
[tr]
[td]3[/td]
[td]Заведение 3[/td]
[th]2[/th]
[/tr]
[tr]
[td]4[/td]
[td]Заведение 4[/td]
[th]2[/th]
[/tr]
[/table]

а вот теперь проблема
мне нужно в полученный результат добавить поле, где будет указанно, заведение находится в избранных или нет.

[table]
[tr]
[th]id[/th]
[th]title[/th]
[th]group_id[/th]
[th]is_favorite[/th]
[/tr]
[tr]
[td]1[/td]
[td]Заведение 1[/td]
[th]2[/th]
[th]1[/th]
[/tr]
[tr]
[td]2[/td]
[td]Заведение 2[/td]
[th]2[/th]
[th]0[/th]
[/tr]
[tr]
[td]3[/td]
[td]Заведение 3[/td]
[th]2[/th]
[th]1[/th]
[/tr]
[tr]
[td]4[/td]
[td]Заведение 4[/td]
[th]2[/th]
[th]0[/th]
[/tr]
[/table]

Пока что я для этого перебераю каждое заведение и регуляркой сравниваю id заведения с тем списком айдишников что я получил ранее.
Я знаю что это не очень удачный вариант, поэтому обращаюсь сюда за помощью, можно ли этот процесс както прям в запросе сделать...

Заранее спасибо

Неактивен

 

#2 06.08.2012 20:45:15

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Нужно в запросе добавить поле со значением определяемым в запросе.

SELECT .., if(ifnull(t1.`institute_id`,0)=0,'не находится','находится') FROM `institute`i left join (SELECT DISTINCT `institute_id` FROM `consumer_favorite` WHERE `consumer_id` = 1) t1 on i.id=t1.`institute_id` WHERE `group_id` = 2 ORDER BY `title`;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson