2016-11-11 11 views
-1

Ich brauche alle Mitarbeiter Paare mit Namen, die zusammen im selben Hotel reisten. Ich habe versucht, es mit der Gruppenfunktion zu bekommen, aber es wird nur die erste angezeigt und es werden auch alle anderen Mitarbeiter angezeigt. Ich habe versucht, es mit einer where-Anweisung zu sortieren (where count (*) == 2), aber es funktioniert nicht mit count(), denke ich.Zeige Spalten mit dem gleichen Datum SQL

select *, count(*) as Travelers from employees E 
    join travel t 
    on E.PNR = E.employees_Nr 
    join hotel H 
    on H.HNR = R.Hotel_HNR 
    group by beginndate; 

Hope you me :) Dank helfen können!

+3

Bitte zeigen Sie einige Beispieldaten und das gewünschte Ergebnis. Markieren Sie auch die verwendeten dbms. –

+0

Im Verwenden von Maria DB auf mysqlWorkbench Daten sind wie Einfügen in Mitarbeiter Werte (2193, 'George', 10,2700); in Mitarbeiter eingeben Werte (2194, 'Schlicht', 30,6000); Einfügen in Hotel Werte (6, 'Zum Stern', 'Business', 37216, 'Witzenhausen'); in Reisewerte einfügen (2194,6, "2015-01-12", "2015-03-12", 2131); in Reisewerte einfügen (2193,6, "2015-01-12", "2015-01-13", 500); – Shaegi

+0

Was bestimmt "zusammen gereist"? Ich würde 'last_name' nicht vertrauen. –

Antwort

0

Die Benennung in Ihren Beispielen ist nicht besonders konsistent, daher ahme ich nur Tabellen-/Spaltennamen nach, um die Idee zu liefern; Natürlich muss die Abfrage in Ihrer realen Umgebung bearbeitet werden.

Wahrscheinlich möchten Sie auch nicht alle Spalten aus allen Tabellen auswählen, aber das haben Sie in Ihrer Abfrage versucht, also lasse ich sie so wie sie ist.

select *, count(*) as Travelers 
from employees E1, employees E2, travel T1, travel T2, hotel H 
where E1.PNR = T1.employees_Nr 
    and E2.PNR = T2.employees_Nr 
    and E1.PNR != E2.PNR 
    and T1.begindate = T2.begindate 
    and T1.hotel_HNR = T2.hotel_HNR 
    and T1.hotel_HNR = H.HNR; 

Die Abfrage möglicherweise nicht die beste jemals aus der Sicht der Leistung, aber ich glaube nicht, dass Sie Millionen von Angestellten und Milliarden von Reisen haben, es sollte also alles richtig machen. Stellen Sie jedoch sicher, dass Sie gute Indizes haben - Primärschlüssel natürlich, aber auch Indizes auf employees_Nr, hotel_HNR und begindate werden wahrscheinlich helfen.

Verwandte Themen