首页 > 解决方案 > 从表 A 的一列中找到一个与表 B 的一列的值相关的重复两次以上的文本值

问题描述

所以我有2张桌子

Table A
hotelNo | name
H1      |Okto
H2      |Petro
H3      |Duke
H5      |Caesar
H6      |Kirby

Table B
hotelNo | type
H1      |Single
H1      |Single
H1      |Double
H1      |Self
H1      |Single
H2      |Single
H2      |Single
H2      |Double
H2      |Self
H2      |Deluxe
H3      |Single
H3      |Single
H3      |Double
H3      |Self
H3      |Deluxe
H5      |Single
H5      |Single
H5      |Double
H5      |Double
H5      |Double
H6      |Single
H6      |Double

现在,我需要列出拥有超过 2 间双人房的酒店。含义 H# = 'Double' > 2 期望的结果应该是这样的:hotelNo | 类型 | 计数 H5 |双|3

我花了更多 24 小时试图解决这个问题,但这是我得到的更远的地方:

SELECT a.hotelNo, b.type, count(b.type = 'Double') > 2 FROM TableA a, TableB b WHERE b.type = 'Double'

——但它不起作用。而是显示:hotelNo | 类型 | 计数(b.type = '双')H1 |双|1

请帮忙!!

标签: sqlcount

解决方案


你似乎走在正确的轨道上。您可以仅限双人间,然后按酒店汇总并声明计数:

SELECT
    a.hotelNo,
    a.name
FROM TableA a
INNER JOIN TableB b
    ON a.hotelNo = b.hotelNo
WHERE
    b.type = 'Double'
GROUP BY
    a.hotelNo,
    a.name
HAVING
    COUNT(*) > 2;

推荐阅读