Помогите правильно сформировать запрос (не знаю как назвать тему)

yantar

Новичок
Помогите правильно сформировать запрос (не знаю как назвать тему)

Надо сделать поиск по 2 полям место расположения и description объекта
Таблицы я менять не могу, мне надо сделать это для существующих таблиц.

Структура таблиц такая:
Таблица item

`itemid` int(11) NOT NULL auto_increment,
`title` varchar(100) default NULL,


Таблица data

`fieldid` int(11) default NULL,
`data_txt` text
`itemid` int(11) default NULL,


2 таблицы связаны по itemid

Если в таблице data fieldid = 15 - это есть место расположение объекта, если fieldid = 16 - это decription объекта

Мне надо сделать поиск по этим 2 полям, как это можна сделать
Если напишу так:
WHERE `fieldid` = '15' AND `data_txt` = 'Киев' AND `fieldid` = '16' AND `data_txt` = 'description'
конечно, что работать не будет.
Если так:
WHERE (`fieldid` = '15' AND `data_txt` = 'Киев') OR (`fieldid` = '16' AND `data_txt` = 'description')
то будут возвращаться лишние записи

Делал через вложенные запросы - не выходит
Пока что пришел к варианту, что тяну с базы все записи, а потом средствами php фильтрую
Поки що прийшов до такого варіанту: витягую всі запити, а потім засобами php хотя знаю, что это плохо.
Плиз помогите.
 

Bitterman

Новичок
[sql]
SELECT * FROM item as i
LEFT JOIN data as d1 ON i.itemid=d1.itemid AND d1.fieldid=15
LEFT JOIN data as d2 ON i.itemid=d2.itemid AND d2.fieldid=16
WHERE d1.data_txt='Киев' AND d2.data_txt='description'
[/sql]
А так?
 
Сверху