1
votes

Détails du client en fonction du nombre de réservations

Rédigez une requête pour afficher l'ID utilisateur et le nom d'utilisateur lorsque le nombre de places réservées par l'utilisateur dans la réservation individuelle est supérieur à 1. Afficher les enregistrements dans l'ordre croissant par nom d'utilisateur.

J'ai essayé cette requête et je Je reçois des erreurs. S'il vous plaît, aidez-moi !!

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;


1 commentaires

mettez à jour votre question et ajoutez votre message d'erreur exact


4 Réponses :


0
votes

Si je comprends votre devoir, il semble que vous devriez faire

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

Bonne chance.


0 commentaires

0
votes

Selon la question, il demande les réservations individuelles> 1 La solution est donc très simple: pour chaque ticket_id , le nombre de sièges doit être supérieur à 1 .

SELECT DISTINCT (user_id), nom

À partir de tickets, rejoignez les utilisateurs UTILISATION (user_id)

WHERE no_seats> 1

ORDER BY nom;


0 commentaires

1
votes
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;

1 commentaires

Les réponses au code uniquement sont déconseillées. Veuillez ajouter quelques explications sur la façon dont cela résout le problème ou en quoi cela diffère des réponses existantes. De l'avis



0
votes

Ce sera plus simple si vous l'essayez sans jointure.

Un exemple simple utilisant une sous-requête:

select  user_id, name from users 
where user_id = any(select distinct user_id from tickets where no_seats > 1) 
order by name asc;


0 commentaires