我一直试图解决这个问题,但遇到了麻烦。
我们有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。
任何帮助都将不胜感激。
由于
答案 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。