PHP/SQL使用以前的查询数据来查询另一个表
问题描述:
我一直在努力工作,我们有一段时间,但有麻烦。PHP/SQL使用以前的查询数据来查询另一个表
我们有4张表,供应商,supplier_areas,supplier_languages和supplier_products选项。
我正在尝试进行高级搜索,用户可以使用上述任何一种方法搜索成员。
一个例子搜索可能是在一定区域内说英语&法语,也卖产品1和2
我知道位置表将总是要通过语言第一次查询,然后所有供应商,然后是产品表,最后是供应商表中的特定字段。
E.g.
所有供应商ID的从supplier_areas其中locationid = 1
这例如返回与supplierids“1”的阵列,“5”,“10”
我然后需要查询语言表以查找从这些供应商讲英语,我可以看到使用的唯一的语句是从supplier_languages
选择供应商ID WHERE languageid = 1或languageid = 2,供应商ID = 1或供应商ID = 5或供应商ID = 10
然后显然使用taht的结果来查询最后两个表。
我假设我打算做的OR语句太慢并且服务器密集。从第一个查询返回的结果可以是任何最多200个供应商ID。
任何帮助,将不胜感激。
感谢
答
,你可以将所有查询到一个:
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语句..
这是伟大的,怎么会在的情况下工作每次都不会查询某些表格?例如,不搜索产品或供应商表中的字段要求where子句 – lethalMango 2010-10-18 14:05:12
根据要检索的数据,可以简单地省略某些表或将其他条件添加到where子句,如'and supplier.name =' mysupplier''。可能性(几乎)是无止境的:o) – 2010-10-18 14:23:45
谢谢,但你能告诉我,这是否会在动态环境中工作,例如在用户发起的高级搜索中所描述的动态环境中......所以基本上改变了哪里字段和值? – lethalMango 2010-10-19 14:22:59