2010-11-09 4 views
2

таблицы объявления:Выберите из нескольких строк

id uid name     description  
1 1 BMW Z5    good condition 
2 1 Sell house   new   

стол ad_values ​​

id sid m_input m_value 
1 1  car  BMW 
2 1  year  2010 
3 1  category 1 
4 2  year  2005 

Как можно найти в таблице "ad_values? Например мне нужно автомобиль BMW которым билд год 2010. Я пытался что-то вроде этого:

SELECT * FROM ad_values WHERE (m_value='BMW' AND m_input='car') AND (m_input='year' AND m_value='2010') AND (m_input='category' AND m_value='1') GROUP BY sid 

Затем я получаю SID и выберите из таблицы «объявление». Но это не сработает.

Извините за мой английский и спасибо за помощь!

ответ

2

Похоже, вы хотите, чтобы результаты приходили из таблицы «объявление» после предоставления условий поискового запроса для таблицы «ad_values». Это что-то вроде того, что вы хотите?

UPDATE

Я установил запрос правильно возвращать соответствующие записи.

SELECT 
    DISTINCT a.* 
FROM 
    ad_values v, 
    ad a 
WHERE 
    v.sid = a.id AND 
    ( 
     (v.m_value='BMW' AND v.m_input='car') OR 
     (v.m_input='year' AND v.m_value='2010') OR 
     (v.m_input='category' AND v.m_value='1') 
    ) 

Этот запрос должен дать следующие результаты:

идентификатор Описание UID Имя
1 1 BMW Z5 хорошее состояние

звук о праве?

+0

MySQL вернул пустой набор результатов. – word

+0

Вы правы. Я обновил запрос. – karlgrz

Смежные вопросы