[英]MySQL joining 2 tables together in one query
我有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是業務類型ID
bus_parent_child是公司編號
因此,我真的很想將兩個查詢包裝在一起,以便它在第一個查詢中找到所有業務,然后將其進一步縮小,因此它也只顯示bus_parent_parent中的業務。
希望我已經清楚我要做什么。
是我追隨的JOIN還是其他?
在下面的SQL中嘗試使用JOIN:
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)
如果我正確理解了您,我認為您需要這樣的東西:
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
上帶有附加的WHERE子句
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
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是業務表的主鍵列。
您應該避免在大型查詢上使用distinct,因為在大型表上這樣做可能會很費力(緩慢)。 特別是如果您請求許多列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.