我是一个 SQL 初学者,我需要弄清楚这个查询:我有三个连接在一起的表,我从中计算某些值,如下所示:
SELECT SEATS_MAX-COUNT(BOOKING_ID)
FROM FLIGHTS
INNER JOIN PLANES ON FLIGHTS.PLANE_ID=PLANES.PLANE_ID
LEFT JOIN BOOKINGS ON FLIGHTS.FLIGHT_ID=BOOKINGS.FLIGHT_ID
GROUP BY SEATS_MAX;
Run Code Online (Sandbox Code Playgroud)
这将返回航班中的空闲座位数。但我想获取 FLIGHTS 中的所有列(如SELECT * FROM FLIGHTS;)加上计数。即类似的东西
SELECT FLIGHTS.*, SEATS_MAX-COUNT(BOOKING_ID)
FROM FLIGHTS
INNER JOIN PLANES ON FLIGHTS.PLANE_ID=PLANES.PLANE_ID
LEFT JOIN BOOKINGS ON FLIGHTS.FLIGHT_ID=BOOKINGS.FLIGHT_ID
GROUP BY SEATS_MAX;
Run Code Online (Sandbox Code Playgroud)
但这不起作用(无效的 user.table.column、table.column 或列规范)。有办法实现这一点吗?我正在使用 Oracle 数据库。
谢谢
在分组依据中,您需要不聚合所有列。
所以你的查询必须变成:
SELECT FLIGHTS.*,
SEATS_MAX-COUNT(BOOKING_ID)
FROM FLIGHTS
INNER JOIN PLANES
ON FLIGHTS.PLANE_ID = PLANES.PLANE_ID
LEFT JOIN BOOKINGS
ON FLIGHTS.FLIGHT_ID = BOOKINGS.FLIGHT_ID
GROUP BY FLIGHTS.Column1,
...
FLIGHTS.ColumN,
SEATS_MAX;
Run Code Online (Sandbox Code Playgroud)
编辑: 要列出表的所有列,您可以使用以下查询
SELECT 'FLIGHTS.' || column_name
FROM user_tab_columns
WHERE table_name = 'FLIGHTS'
ORDER BY column_id;
Run Code Online (Sandbox Code Playgroud)
这应该会让你的生活更轻松一些,然后复制并粘贴
| 归档时间: |
|
| 查看次数: |
16977 次 |
| 最近记录: |