SQL Join Ausgabe von gleichen Vornamen

Hallo zusammen,

folgende Situation.
Ein SQL Join Abfrage soll ermitteln welche Benutzer bzw. Nicknames die selben Vorname haben.
Bisher habe ich folgendes , gibt alle Benutzer aus .
Bitte um Hilfe

select * from Benutzer left join Studenten on Studenten.Nickname=Benutzer.Nickname 
                       left join Professoren on Professoren.Nickname=Benutzer.Nickname
                       left join Mitarbeiter on MItarbeiter.Nickname=Benutzer.Nickname
                       order by Vorname;

Hausaufgaben?

Der Aufgabentext ist sicher länger.

Hint: beschäftige Dich mit den unterschiedlichen JOIN-Typen, Google wird Dir dabei behilflich sein.


Andreas

Jo ,

bin soweit das er mir die gleichen Vornamen zählt aber wie zeige ich die spalten an ?

select count(*)as Summe from Benutzer  group by Vorname having COUNT(Vorname)>1;

Na immerhin :wink:

Du könntest z.B. via row_number() zählen per Gruppe zählen. Dabei kannst alle Spalten anzeigen. Oder Du erweiterst Deine obige Abfrage um die ID (bzw. das, was Du als PK hast), und nimmst diese Abfrage als Subselect im Where.

Den Rest solltest Du nun schaffen.


Andreas

Ich habe es mal so versucht klappt leider nicht , es kommt einer fehler mit varchar kann in int nicht konvertiert werden.

select Nickname from Benutzer where Nickname in(select COUNT(Vorname) from Benutzer group by Vorname having COUNT(Vorname)>1);

Ja, “where Nickname in(select COUNT(Vorname)” will Nickname (sicherlich ein varchar) mit der Anzahl (ein INT) vergleichen. Denk mal drüber nach, dann merkst sicher auch Du, daß das Bullshit ist.


Andreas

Wie würde es richtig aussehen ? krieg hier noch ne krise ^^

Denk selber nach, bist nah dran :wink:

Andreas

Ich komme leider nicht drauf, wäre super wenn du es sagen könntest

Schade für Dich…

test=*# select * from stray ;
 nickname | vorname
----------+---------
 nick1    | otto
 nick2    | frieda
 nick3    | paula
 nick4    | otto
(4 rows)

Time: 0,161 ms
test=*# select * from stray where vorname in (select vorname from stray group by vorname having count(vorname) > 1 );
 nickname | vorname
----------+---------
 nick1    | otto
 nick4    | otto
(2 rows)

Andreas