从多行中选择

时间:2010-11-09 18:16:32

标签: php mysql search select

表格广告:

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'?例如,我需要汽车宝马,建造年份是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

然后我从表'ad'获得SID和SELECT。但它不起作用。

对不起我的英文,感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

在为表'ad_values'提供搜索查询字词后,您似乎希望结果来自表'广告'。这有点像你想要的吗?

<强>更新

我修复了查询以正确返回匹配的记录。

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')
    )

此查询应产生以下结果:

id uid name description
1 1 BMW Z5状况良好

听起来对吗?