我有2个问题要加入,我以前从未真正做过。希望你们其中一个明亮的火花可以提供帮助。
它正在展示出售的商家。第一个查询没问题。
SELECT DISTINCT * FROM businesses WHERE business_asking_price > 1 AND business_location = 11 ORDER BY business_id DESC
以上搜索特定价格内的所有商家以及查找伦敦的所有商家。
到目前为止一切顺利。
但我遇到的头痛是商业类型。一个企业(比如理发师)可以有多种类型的商业类型。在这种情况下,它是健康/美容和美发沙龙。
因此类别位于另一个名为bus_parents的表中:
bus_parent_id | bus_parent_parent | bus_parent_child
176 | 56 | 42
177 | 56 | 43
181 | 56 | 46
202 | 56 | 57
bus_parent_id显然是唯一ID
bus_parent_parent是业务类型标识
bus_parent_child是业务ID
所以我真的想把这两个查询包装在一起,这样它就可以找到所有第一个查询的业务,然后进一步缩小它们,这样它才能显示bus_parent_parent中的业务。
希望我已经明确了我要做的事情。
我是追求加入还是其他什么?
答案 0 :(得分:0)
使用JOIN尝试以下SQL:
SELECT DISTINCT businesses.*
FROM businesses
INNER JOIN bus_parents ON businesses.business_id = bus_parents.bus_parent_child
WHERE businesses.business_asking_price > 1
AND businesses.business_location = 11
AND bus_parents.bus_parent_parent = 56
ORDER BY businesses.business_id DESC
它会检索所有类型为id = 56的商家,您可以根据需要更改此参数。
根据您对bus_parents中每个字段的描述,我使用JOIN
来检索所需的结果。 (缩小业务类型ID)
答案 1 :(得分:0)
如果我理解正确,我想你想要这样的事情:
SELECT DISTINCT * FROM businesses
LEFT JOIN business_type ON business_type.bus_parent_child = business.id
WHERE business_asking_price > 1 AND business_location = 11
AND business_type.bus_parent_parent = <Your desired parent>
ORDER BY business_id DESC
这是将业务加入business_type.bus_parent_child = business.id
在type.bus_parent_parent
答案 2 :(得分:0)
SELECT DISTINCT businesses.*
FROM businesses a
INNER JOIN bus_parents b ON a.business_id = b.bus_parent_parent
WHERE a.business_asking_price > 1
AND a.business_location = 11
ORDER BY a.business_id DESC
答案 3 :(得分:0)
SELECT * FROM businesses b WHERE business_asking_price > 1 AND business_location = 11
and (select bus_parent_id from bus_parents where bus_parent_child=b.bussiness_id and bus_parent_parent=in(56,57,58) limit 1) != NULL
ORDER BY business_id DESC
这里我假设bussiness_id是business表的主键列。
你应该避免在大型查询中使用distinct,因为它对大型表格来说非常繁重(慢)。特别是如果你要求很多列。