SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 20.09.2009 10:26:50

jorik
Участник
Зарегистрирован: 20.09.2009
Сообщений: 9

Выбрать записи из нужных категорий

Есть три таблицы  category,  realty,  category_post Где category_post


CREATE TABLE `category_post` (
  `cat_id` int(5) unsigned default NULL,
  `real_id` int(5) unsigned default NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
 


Получаем табличку (многие ко многим)
    cat_id + real_id
   ---------| ---------
     1        |  1
     1        |  2
     2        |  2
     2        |  3

Такая структура нормально работает если нужно выбрать записи по одной или нескольким категориям (OR), Вопрос: Как составить запрос для выборки всех записей которые принадлежат одновременно нескольким категориям?
Например нужно выбрать все из category_post где cat_id = 1 И cat_id =2  данном примере бы выбралась только real_id = 2.
Заранее спасибо за любые отклики.

Неактивен

 

#2 20.09.2009 11:14:44

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

Re: Выбрать записи из нужных категорий

select real_id from category_post c1 join category_post c2 using (real_id) where c1.cat_id=1 and c2.cat_id=2;

Неактивен

 

#3 20.09.2009 17:09:55

jorik
Участник
Зарегистрирован: 20.09.2009
Сообщений: 9

Re: Выбрать записи из нужных категорий

Огромнейшее спасибо! здорово что вы есть

Неактивен

 

#4 22.09.2009 16:32:21

jorik
Участник
Зарегистрирован: 20.09.2009
Сообщений: 9

Re: Выбрать записи из нужных категорий

Ещё вопрос в продолжение темы.
А как бы мог выглядеть запрос если нужно выбрать запись которая принадлежит к N числу категорий cat_id = 1 И cat_id =2 И cat_id =4 ....

Неактивен

 

#5 22.09.2009 16:48:31

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

Re: Выбрать записи из нужных категорий

Приведенный выше запрос является самообъединением таблицы.
В случае если запись принадлежит к N числу категорий, вам придется проводить N самообъединений таблицы, т.е. N раз проводить JOIN таблицы с самой собой.

http://dev.mysql.com/doc/refman/5.1/en/join.html

Неактивен

 

Board footer

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