PHP / SQL使用先前查询中的数据来查询另一个表

时间:2010-10-17 22:42:54

标签: php mysql multidimensional-array

我一直试图解决这个问题,但遇到了麻烦。

我们有4个表,包括供应商,supplier_areas,supplier_languages和supplier_products选项。

我正在尝试进行高级搜索,用户可以使用上述任何一种搜索成员。

示例搜索可能是某个区域中说英语和英语的所有供应商。法国,还销售产品1和2.

我知道必须首先查询位置表,然后是语言,然后是产品表,最后是供应商表格中的特定字段。

E.g。

所有supplierid来自supplier_areas,其中locationid = 1

这例如返回一个带有supplierids'1','5','10'

的数组

然后,我需要查询语言表,找出哪些供应商说英语,我能看到的唯一声明是

从supplier_languages选择供应商ID WHERE languageid = 1 OR languageid = 2 AND supplierid = 1 OR supplierid = 5 OR supplierid = 10

然后显然使用taht的结果来查询最后两个表。

我假设我计划做的OR语句太慢而且服务器密集。从第一个查询返回的结果可能是多达200多个供应商ID。

任何帮助都将不胜感激。

由于

2 个答案:

答案 0 :(得分:3)

您可以将所有查询合并为一个:

select * 
from supplier_areas
join supplier_languages using (supplierid)
join supplier_products using (supplierid)
join supplier using (supplierid)
where
    supplier_areas.locationid=1 
and supplier_languages.languageid in (1,2)
and supplier_products.productid in (....)

正如middus所说,深入研究JOIN声明..

答案 1 :(得分:1)

您应该在mysql语句中使用JOIN