-2
votes

Comment rejoindre la même table plus d'une fois pour sélectionner différentes colonnes?

J'ai besoin de trouver des utilisateurs qui ont fabriqué ou reçu une réservation.

J'ai deux tables qui ressemblent à ceci: p>

Utilisateurs: P>

select u.id, b1.rid, b2.oid
from users u
left join bookings b1
on u.id = b1.rid
left join bookings b2
on u.id = b2.oid;


2 commentaires

Et comment la fenêtre TIME est-elle définie?


@Amaitu vous n'avez pas besoin de rejoindre ou même d'utiliser la table des utilisateurs. Vous avez seulement besoin de réservations.


4 Réponses :


0
votes

Vous devriez être capable d'utiliser une clause Union ici. de
Cependant, vous ne définissez pas ce que la "fenêtre de l'heure" est, alors je ne suis pas sûr que nous puissions trouver une solution complète pour vous. Cependant, essayez quelque chose comme ce qui suit: xxx


0 commentaires

0
votes

Vous voulez tous les identifiants utilisateur qui sont soit dans des réservations.Id ou des bookdings.oid. Donc, vous pourriez faire quelque chose comme: xxx


0 commentaires

0
votes

Ma sortie doit être une liste des ID utilisateur correspondant aux utilisateurs qui ont effectué ou reçu une réservation. P>

Pour ce faire, il vous suffit de regarder les réservations code> Table: p> xxx pré>

le distinct code> supprime le Duplicates retournées par chaque requête et le Union tout code> supprime des doublons sur les deux requêtes. p>

Si vous souhaitez filtrer par horaire: P>

SELECT DISTINCT rid id FROM bookings WHERE some_date BETWEEN :start_date AND :end_date
UNION ALL SELECT DISTINCT oid FROM bookings WHERE some_date BETWEEN :start_date AND :end_date


0 commentaires

0
votes

Je suppose qu'il y a une colonne Nom code> dans utilisateurs code> Table. de
Si vous le souhaitez aussi,

select distinct userid from (
  select rid userid from bookings
  union
  select oid userid from bookings
) t 


0 commentaires