SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 22.04.2011 23:24:50

alesto
Участник
Зарегистрирован: 27.01.2011
Сообщений: 19

Не знаю как написать select запрос

Есть простая таблица
id,tag_id,post_id
Как нетрудно догадаться она отображает взаимосвязь между тегом и записью в блоге. Как можно вывести запись у которой есть несколько тегов? Например несколько рядков в таблице могут выглядеть вот так
1  27  5
2  28  5
3  29  5

Как выбрать записи у которых есть все 3 тега? 27,28,29;

Неактивен

 

#2 23.04.2011 23:08:49

ArmanZak
Участник
Зарегистрирован: 19.03.2011
Сообщений: 17

Re: Не знаю как написать select запрос

select * from table where post_id='твое число'

Неактивен

 

#3 25.04.2011 19:46:11

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Не знаю как написать select запрос

Можно написать «в лоб» — самообъединением таблицы:
SELECT .. FROM tablename t1, tablename t2 WHERE t1.tag_id = 27 AND t2.tag_id = 28 AND t1.post_id = t2.post_id.

Можно немного схитрить:
SELECT post_id, COUNT(*) AS c FROM tablename WHERE tag_id IN (27,28,29) GROUP BY 1 HAVING c = 3.

Неактивен

 

#4 25.04.2011 19:46:57

alesto
Участник
Зарегистрирован: 27.01.2011
Сообщений: 19

Re: Не знаю как написать select запрос

Спасибо! второй вариант рабочий!

Неактивен

 

#5 23.05.2011 19:19:02

alesto
Участник
Зарегистрирован: 27.01.2011
Сообщений: 19

Re: Не знаю как написать select запрос

Подскажите пожалуйста а можно ли выбрать все теги которые есть у записи модифицировав этот запрос
SELECT post_id, COUNT(*) AS c FROM tablename WHERE tag_id IN (27,28,29) GROUP BY 1 HAVING c = 3.
Без вложенных запросов?

Неактивен

 

Board footer

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