2009-12-04 11 views
0

une autre requête de 3 tables ici. J'ai une réservation de table, customer_service et facturation. J'essaie de sélectionner roomtype à partir de la réservation et certains autres champs de la facturation "ON" r.ID = b.rID et la même chose pour customer_services (montré ci-dessous).Requête de chevauchement de table MySQL 3

La première partie avant l'union fonctionne bien, mais lors de l'ajout de l'union, je reçois un effet secondaire étrange que tout résultat avec un r.Roomtype dupliqué, b.Quantity, b.UnitPrice, et b.Total sont supprimés.

Comment puis-je éviter cela, car ils auront b.reservationID différent et je veux les doublons?

SELECT r.RoomType, b.Quantity, b.UnitPrice, b.Total FROM Billing b, Reservation r 
WHERE b.ReservationID = r.ReservationID 
     AND b.UserName = "Stuart" 
     AND b.Paid = "0" 

UNION 

SELECT cs.ServiceName, b.Quantity, b.UnitPrice, b.Total FROM Customer_Service cs, Billing b 
WHERE b.CustomerServiceID = cs.CustomerServiceID 
     AND b.UserName = "Stuart" 
     AND b.Paid = "0"; 
+0

j'ai changé mon syndicat à "Union ALL" et qui semble faire ce que je veux. Je comprends que «union» par défaut est une union distincte, mais dans quels domaines est-elle distincte, seule la rangée entière doit être distincte? – Stuart

Répondre

1

Faire usage de UNION ALL au lieu de simplement UNION

Voir UNION Syntax

+0

merci beaucoup – Stuart