Туплю с SQL/ Помогите составить запрос

voodoo911
На сайте с 11.03.2008
Offline
157
381

Помогите составить запрос, ибо я туплю. Нужно выбрать из таблицы ID поста по соответствию нескольких строк. Типа выбрать ID номера, где есть две кровати и можно брать животных. Чето нас тругал типа

SELECT id FROM postmeta WHERE (( meta_key = 'beds' AND meta_value= '2' ) AND ( meta_key = 'pets' AND meta_value= '1' ))

Но запрос выдает null ....

Что не так делаю ?

mr-faq
На сайте с 03.09.2007
Offline
114
#1

id это не первичный ключ таблицы постмета как я понимаю?

SELECT id FROM postmeta WHERE (( meta_key = 'beds' AND meta_value= '2' ) AND id in (SELECT id FROM postmeta WHERE ( meta_key = 'pets' AND meta_value= '1' ))

наверное как-то так?

Покупаю и продаю сайты только здесь (http://www.telderi.ru/?pid=270de4)
voodoo911
На сайте с 11.03.2008
Offline
157
#2

meta_id id meta_key meta_value

231 56 pets 2

230 56 beds 4

Просто думал как то замутить без подзапроса, ибо количество параметров поиска динамическое...

mr-faq
На сайте с 03.09.2007
Offline
114
#3
voodoo911:
без подзапроса

нереально с такой структурой.

а чем подзапросы не устраивают? Пофик, что динамическое

voodoo911
На сайте с 11.03.2008
Offline
157
#4

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

Great-Antique
На сайте с 21.08.2010
Offline
16
#5

Можно еще как-то так

SELECT t.id

FROM `postmeta` t

INNER JOIN `postmeta` t1 WHERE t.id = t1.id AND t1.meta_key = 'beds' AND t1.meta_value = 2

INNER JOIN `postmeta` t2 WHERE t.id = t2.id AND t2.meta_key = 'pets' AND t2.meta_value = 1

---------- Добавлено 10.02.2012 в 17:07 ----------

Подзапросы - это не "плохо".

Пишу небольшие PHP-скрипты бесплатно. Главное, чтобы интересно было. Блог о PHP-разработке (http://den.girnyk.com) и не только.
voodoo911
На сайте с 11.03.2008
Offline
157
#6

Ну как вариант - да. Спасибо за помощь

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий