SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 14.04.2010 14:38:45

anthony
Участник
Зарегистрирован: 14.04.2010
Сообщений: 2

Выборка по массиву

Здравствуйте, подскажите как сделать такую выборку:

Есть  таблица связей (например id новости и присвоенного тэга)

newsId     tagId
5    5
5    6
5    7
5    8
6    9
6    10
6    11
7    12
7    14
8    15

Есть входящий массив id тэгов (допустим 5,6,7,8)

Как сделать выборку при которой будет получен id новости у которой есть все вхождения id тэгов?

Может быть есть какая то модификация оператора IN, которая позволяет выбирать по всем значениям?


Заранее, Спасибо.

Неактивен

 

#2 14.04.2010 15:38:02

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

Re: Выборка по массиву

Только самообъединением:

SELECT t1.newsId
FROM tablename t1
JOIN tablename t2 ON t2.newsId = t1.newsId
JOIN tablename t3 ON t3.newsId = t1.newsId
JOIN tablename t4 ON t4.newsId = t1.newsId
WHERE t1.tagId = 5 AND t2.tagId = 6 AND t3.tagId = 7 AND t4.tagId = 8

Неактивен

 

#3 14.04.2010 15:51:48

anthony
Участник
Зарегистрирован: 14.04.2010
Сообщений: 2

Re: Выборка по массиву

Спасибо!

Неактивен

 

#4 27.04.2010 15:36:32

boo
Участник
Зарегистрирован: 19.02.2010
Сообщений: 4

Re: Выборка по массиву

зачем так запутано???
достаточно ваш массив представить в строчном виде:
'5','6','7','8'

пример:
$arr = array(5,6,7,8);
$arr_lists = '\'' . implode ( "','", $arr ) . '\''; //разбиваем массив с одинарными ковычками и запятой + ставим эти кавычки по краям

$r = mysql_query ( "SELECT * FROM table WHERE `id` IN (" . $arr_lists . ")" );

Неактивен

 

#5 27.04.2010 15:59:03

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

Re: Выборка по массиву

Потому что требуется, чтобы у новости были все указанные тэги, а не хотя бы
один из них. Ваша схема реализует операцию «или».

Неактивен

 

#6 27.04.2010 16:07:53

boo
Участник
Зарегистрирован: 19.02.2010
Сообщений: 4

Re: Выборка по массиву

верно, невнимательно прочитал что требуется.

Неактивен

 

Board footer

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