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;
4 Réponses :
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.
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;
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;
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
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;
mettez à jour votre question et ajoutez votre message d'erreur exact