【问题标题】:Select from multiple rows从多行中选择
【发布时间】:2011-05-07 10:14:21
【问题描述】:

桌面广告:

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

表格广告值

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。但它不起作用。

【问题讨论】:

    标签: php mysql search select


    【解决方案1】:

    在为表“ad_values”提供搜索查询词后,您似乎希望结果来自表“ad”。这和你想要的一样吗?

    更新

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

    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 名称描述
    1 1 BMW Z5 状况良好

    听起来对吗?

    【讨论】:

    • MySQL 返回了一个空的结果集。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多