用于高级搜索的php sql查询

时间:2014-02-03 20:25:15

标签: php mysql sql

我需要为高级搜索执行特定查询。

我提供了db结构的样本

id         code        content        id_post
--------   --------    -----------    -------------
1          reg         lazio          1
2          reg         lazio          2
3          type        typeX          1
4          type        typeY          2

现在我必须在此表中进行一些搜索并获得正确的id_post,例如:

我希望所有id_post都有code = reg和content = typeY 在这种情况下,没有结果

2d示例 - >所有id_post代码= reg和content = lazio 结果必须是1和2

3d示例 - >所有id_post都有(code = reg和content = lazio)和(code = type and content = typeY) 结果必须是2

依旧......

如何设置三个查询?

1 个答案:

答案 0 :(得分:0)

试试这个:

示例1:

select id_post from your_table where code = 'reg' and content = 'typeY'

示例2:

select id_post from your_table where code = 'reg' and content = 'lazio'

示例3:

select t1.id_post from your_table as t1
inner join (select id_post from your_table where code = 'type' and content = 'typeY') as t2 on t1.id_post = t2.id_post
where t1.code = 'reg' and t1.content = 'lazio'

我已经运行测试来验证结果。您可以在sqlfiddle

上自行验证

示例3基本上是intersection,这就是andor方法都不起作用的原因。您可以参考this question了解更多解决此类查询的方法。