【问题标题】:Retrieving Single unique record from multiple repeating record从多个重复记录中检索单个唯一记录
【发布时间】:2013-03-13 15:55:55
【问题描述】:

如果我有以下两个表

热门

 HOTELID   HOTEL NAME
  1        PARK HOTEL
  2        PARK PLAZA
  3        HOLIDAY IN

房间桌子

HOTELID    ROOMINUMBER  ROOMTYPE  FLOORNUMBER  ROOMRATE
1          111          SINGLE         1          100
1          111          DOUBLE         1          200
1          113          DOUBLE         2          200
2          111          FAMILY         2          300

我想列出名称中包含PARK 字样的每家酒店的酒店名称、房间类型和房价,如果同一酒店的相同类型和价格的房间我只想列出一次。以下是我的代码...我需要一个子查询,我该如何绕过这个查询?

SELECT DISTINCT HOTELNAME, 
       DISTINCT ROOMTYPE, 
       DISTINCT ROOMRATE
  FROM ROOM, 
       HOTEL
 WHERE HOTELNAME LIKE '%PARK%'
GROUP BY HOTEL.HOTELNAME, 
         ROOMTYPE;

应该是这样的

HOTEL NAME      ROOMTYPE   ROOMMATE
PARK HOTEL       SINGLE     100
PARK HOTEL       DOUBLE     200
PARK PLAZA       FAMILY     300

【问题讨论】:

  • 那么你的输出是什么。

标签: sql oracle select distinct


【解决方案1】:

另一种选择:

SELECT DISTINCT 
    HOTELNAME, 
    ROOMTYPE, 
    ROOMRATE
FROM 
    ROOM 
    JOIN HOTEL
       ON ROOM.HOTEL_ID = HOTEL.HOTEL_ID
WHERE 
    HOTELNAME LIKE '%PARK%'

【讨论】:

    【解决方案2】:

    您选择的所有项目都必须出现在分组依据中。

    您需要根据酒店 ID 将两个表实际连接在一起。

    SELECT H.HOTELNAME, R.ROOMTYPE, R.ROOMRATE
    FROM HOTEL H INNER JOIN ROOM R ON H,HOTELID = R.HOTELID
    WHERE H.HOTELNAME LIKE '%PARK%'
    GROUP BY H.HOTELNAME, R.ROOMTYPE, R.ROOMRATE
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      • 2013-08-03
      • 2015-04-04
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多