0
對於網站(旅行社),我正在提高性能。目前我正在優化搜索模塊。除其他外,我想優化一個保存目的地的選擇框。在該系統中有幾個目的地,但並非所有目的地都有可預訂的住宿。所以我想要列出至少有1個住宿的目的地。目的地表(表名:地理數據)有4種類型:國家,地區,地區和城市。由於(有點*)不適當的發展,住宿表持有4個外鍵(fk_country,fk_area,fk_region和fk_city)。 *由於每次開發功能時需要增長和收到要求。根據左連接的列值計算行數
我嘗試了以下基於IF語句的左連接。但是這個查詢只做了一半的工作。我最感興趣的是某個國家,地區,地區或城市的住宿數量。此時我只能獲得住宿總數。如何調整此查詢以正確獲取給定位置類型的住宿數量。
我的查詢:
SELECT geodata.id,
geodata.type,
COUNT(accommodation.id) AS count_accommodations
FROM geodata
LEFT JOIN accommodation
ON IF(geodata.type = 'Country', accommodation.fk_country,
IF(geodata.type = 'Area', accommodation.fk_area,
IF(geodata.type = 'Region', accommodation.fk_region, accommodation.fk_city)
)
)
GROUP BY geodata.id
HAVING count_accommodations > 0
電流輸出:
|id|type |count_accommodations|
---------------------------------
| 1|Country| 2|
| 2|Area | 2|
| 3|Area | 2|
預計輸出
|id|type |count_accommodations|
---------------------------------
| 1|Country| 2|
| 2|Area | 1|
| 3|Area | 1|
任何幫助是極大的讚賞。
哈哈,笨我!謝謝......因爲嵌套的IF,我完全忽略了這個部分。 +1接受。感謝讓我保持敏銳;) – Ben