我有两个如下表
hotels
------
hotelID
hotelName
第二张桌子
operators
---------
opID
opName
opServices
opHotelID
简短的解释:在第一个表中,我有很多旅馆,它们的增量ID是唯一的.第二个表包含为该酒店提供其他服务的所有操作符.这里的opID也是唯一的,但是opHotelID存在多次,因为可能有很多操作符提供该酒店.
现在,我想得到的是以下内容:
我想获取HotelName和一个附加的列(称为运算符),该列列出了提供酒店的所有运算符.
所以结果应该是这样的…
123 - Hotel ABC - OP1,Op2,OP3
而不是这个…
123 - Hotel ABC - OP1
123 - HOtel ABC - OP2
123 - Hotel ABC - OP3
有没有办法在一个SQL查询中执行此操作,或者您将如何解决此问题?我目前正在使用搜索功能,目前我有一个带有左联接的简单SELECT查询,但这将返回更多行.现在,搜索应仅显示唯一的HotelID,并将不同的运算符合并到一栏中.
谢谢您的帮助,祝您有美好的一天.
再见
WorldSignia
解决方法:
试试这个:
SELECT hotels.hotelID,
hotels.hotelName,
GROUP_CONCAT(operators.opName SEPARATOR ', ') AS opList
FROM hotels
INNER JOIN operators
ON operators.opHotelID = hotels.hotelID
GROUP BY(hotels.hotelID)
如果要拥有运算符数量,则必须在运算符ID上使用COUNT,如下所示:
SELECT hotels.hotelID,
hotels.hotelName,
GROUP_CONCAT(operators.opName SEPARATOR ', ') AS opList,
COUNT(operators.opID) AS nbOperatos
FROM hotels
LEFT JOIN operators
ON operators.opHotelID = hotels.hotelID
GROUP BY(hotels.hotelID)