在mysql查询中困惑

时间:2011-02-23 13:02:58

标签: php mysql

我有两张表property_descriptionproperty_extras

property_description看起来像

id location price etc etc
1  New York 3000   v    v

property_extras看起来像

property_id  extras
1           12,14,16,167

那么问题是,只有当至少有一个额外的匹配时,mysql如何查询它才能返回结果?

3 个答案:

答案 0 :(得分:2)

尽管可以使用架构,但解决问题的正确方法是 normalize your database

答案 1 :(得分:1)

理想情况下,您应该将附加内容标准化为

property_id  extra_id
1            12
1            14
...

如果你不能将你的数据库结构转换成这样的东西,那么你必须做一些事情(可怕的),如:

SELECT property_id FROM property_extras WHERE
    extras LIKE '12,%' OR extras LIKE '%,12,%' OR  extras LIKE '%,12'

或者,如果您可以像逗号一样指出,12,14,...,那样在开头和结尾插入逗号,只需:

SELECT property_id FROM property_extras WHERE extras LIKE '%,12,%'

答案 2 :(得分:0)

你可以在行的开头和结尾用extras填充每个,行吗(例如,12,14,16,167,)吗?

然后这将完美地运作

SELECT FROM `property_description` LEFT JOIN `property_extras` WHERE `property_extras`.`extras` REGEXP ',(13|14|166),'

SELECT FROM `property_description` LEFT JOIN `property_extras` WHERE `property_extras`.`extras` REGEXP ',14,'