PHP-MySQL-如何联接两个没有重复的表?

我有两个如下表

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)
上一篇:数据透视表将行复制到新列中


下一篇:linux-根据列查找重复的行,并使用awk打印行和行号