首页 > 解决方案 > 在另一个表中列出具有参数计数的名称 - mysql

问题描述

不知道如何描述它,我已经在互联网上搜索了几个小时并且已经麻木了。我有两张桌子。一个叫酒店,另一个叫房间。非常不言自明,但酒店是一个以“hotelNo”作为主键并带有城市和名称的酒店列表,而房间有其他信息和“hotelNo”作为酒店主键的外键。

酒店

+---------+---------------------+----------+
| hotelNo | hotelName           | city     |
+---------+---------------------+----------+
|       1 | Grosvenor Hotel     | Sydney   |
|       2 | ANA Hotel           | Sydney   |
|       3 | Great Mansion Hotel | Brisbane |
|       4 | Grand Hotel         | Brisbane |
|       5 | Central Hotel       | Sydney   |
|       6 | Airport Hotel       | Sydney   |
+---------+---------------------+----------+

和房间

+--------+---------+------+--------+
| roomNo | hotelNo | type | rate   |
+--------+---------+------+--------+
|    101 |       1 | S    | 120.00 |
|    101 |       2 | D    | 100.00 |
|    101 |       3 | S    |  80.00 |
|    101 |       5 | D    | 180.00 |
|    102 |       1 | S    | 120.00 |
|    102 |       2 | S    |  80.00 |
|    102 |       3 | S    |  80.00 |
|    102 |       5 | K    | 190.00 |
|    103 |       1 | S    | 120.00 |
|    103 |       3 | D    | 100.00 |
|    103 |       5 | S    | 120.00 |
|    104 |       1 | D    | 150.00 |
|    104 |       4 | Q    | 100.00 |
|    104 |       5 | D    | 140.00 |
|    105 |       1 | D    | 150.00 |
|    105 |       4 | Q    | 500.00 |
|    106 |       1 | D    | 150.00 |
|    107 |       1 | Q    | 180.00 |
|    108 |       1 | Q    | 180.00 |
|    109 |       1 | Q    | 180.00 |
+--------+---------+------+--------+

我被问到的问题是

“列出悉尼拥有 3 间或更多房间的酒店名称。”

我希望我的输出只是酒店的名称

+---------------------+
| hotelName           |
+---------------------+
| Grosvenor Hotel     |
| Central Hotel       |
+---------------------+

任何帮助都会很棒,因为我还有一些事情要做。干杯

标签: mysqlsqlcount

解决方案


只需按照上述评论的建议进行操作,然后加入两个表,按酒店汇总:

SELECT
    h.hotelNo,
    h.hotelName
FROM hotel h
INNER JOIN room r
    ON h.hotelNo = r.hotelNo
GROUP BY
    h.hotelNo,
    h.hotelName
HAVING
    COUNT(*) >= 3;

请注意,我使用酒店名称和酒店 ID 号进行选择(并汇总)。这是为了涵盖澳大利亚的两家酒店可能碰巧同名的情况。


推荐阅读