Oracle 基于预订数量的客户详细信息
编写查询以显示用户id和用户名,其中用户在个人预订中预订的座位数大于1。按用户名升序显示记录 我已经尝试了这个查询,但我发现了错误。请帮帮我Oracle 基于预订数量的客户详细信息,oracle,Oracle,编写查询以显示用户id和用户名,其中用户在个人预订中预订的座位数大于1。按用户名升序显示记录 我已经尝试了这个查询,但我发现了错误。请帮帮我 select u.user_id,u.name from users u join bookingdetails bd on u.name=bd.name join tickets t on u.user_id=t.user_id group by u.name having count(t.no_se
select u.user_id,u.name
from users u join bookingdetails bd
on u.name=bd.name
join tickets t on u.user_id=t.user_id
group by u.name
having count(t.no_seats) > 1
order by u.name;
如果我理解你的任务,看起来你应该这样做
WITH cteBookings AS (SELECT bd.USER_ID, SUM(t.NO_SEATS) AS TOTAL_SEATS_BOOKED
FROM BOOKINGDETAILS bd
INNER JOIN PAYMENTS p
ON p.BD_ID = bd.BD_ID
INNER JOIN TICKETS t
ON t.TICKET_ID = p.TICKET_ID
GROUP BY bd.USER_ID)
SELECT DISTINCT b.USER_ID, u.USER_NAME
FROM USERS u
INNER JOIN cteBookings b
ON b.USER_ID = u.USER_ID
WHERE b.TOTAL_SEATS_BOOKED > 1
ORDER BY u.USER_NAME ASC
祝你好运。根据问题,它要求个人预订>1 因此,解决方案非常简单,即对于每个票证id,座位数应大于1 选择DISTINCT(用户id)、name 从内部加入用户 使用(用户id) 没有座位>1的地方
按名称订购 如果您尝试不使用联接,则会更简单
select distinct u.user_id,u.name from users u
join tickets t on u.user_id = t.user_id
where
u.user_id in( select user_id from tickets where no_seats>1)
order by u.name;
使用子查询的一个简单示例:
select user_id, name from users
where user_id = any(select distinct user_id from tickets where no_seats > 1)
order by name asc;
更新您的问题并添加准确的错误信息代码。不鼓励只提供答案。请添加一些解释,说明这是如何解决问题的,或者这与现有答案有何不同。