PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was macht SQL-Befehl "corresponding"?


Nasenbaer
2008-02-29, 12:41:57
Kann mir jemand erklären was der SQL Befehl "corresponding" macht?
Z.B. hier:

SELECT count(*) FROM (Professoren union corresponding Studenten)

JTHawK
2008-02-29, 15:33:23
In diesem Beispiel wird die Tabelle Professoren mit der Studenten zusammengefasst mit alles bei denen die Spaltenanmen identisch sind gezählt. Also hier entweder alles wenn in beiden mindestens 1^gleichnamige Spalte ist oder garnix wenn nicht :)

Nasenbaer
2008-02-29, 17:42:23
Also angenommen wir haben die Tabellen:

Professoren:
PersonalNummer | Name | Lehrstuhl | Gehalt
------------------------------------------------
1 | Klaus1 | INF | 8005
2 | Klaus2 | INF | 8004
3 | Klaus3 | INF | 8003
4 | Klaus4 | INF | 8002
5 | Klaus5 | INF | 8001

Studenten:

MatrikelNummer | Name | Imatr.-Datum |
----------------------------------------
123 | Bob1 | 1.1.2002
256 | Bob2 | 1.1.2005
789 | Bob3 | 1.1.2007

Dann käme bei obigem Beispiel 8 raus, weil sie Name als gemeinsame Spalte haben?

Bei der Abfrage

SELECT name FROM (Professoren corresponding union Studenten)

Käme dann

Klaus1
Klaus2
Klaus3
Klaus4
Klaus5
Bob1
Bob2
Bob3

raus?

Und bei

SELECT * FROM (Professoren corresponding union Studenten)

???
Das gleiche wie bei einem full outer join? Also NULL Werte bei nicht zuordnenbaren Attributen?

Nasenbaer
2008-03-01, 23:00:14
Na toll. Ich wollte jetzt einfach mal testen was rauskommt wenn man das nutzt aber MySQL und PostgreSQL haben SQL-92 natürlich noch nicht voll drauf weswegen "corresponding" natürlich auch nicht mit unterstützt wird. :(

JTHawK
2008-03-02, 15:24:08
Bei beiden SQL-Querrys kommt das gleiche raus, da in beiden ja nur "name" identisch ist.

Jo, Mysql kann mit corresponding noch nix anfangen :)

... und es heißt "union corresponding" und nicht anders herum :)

Nasenbaer
2008-03-02, 15:52:01
Ok thx. Gibt es eigentlich ne freie Implementierung des SQL-92 Standards?

Coda
2008-03-02, 19:04:31
MySQL ist bis auf minimale Details SQL-92 kompatibel.

http://dev.mysql.com/doc/refman/5.1/en/differences-from-ansi.html

Nasenbaer
2008-03-02, 19:25:28
MySQL ist bis auf minimale Details SQL-92 kompatibel.

http://dev.mysql.com/doc/refman/5.1/en/differences-from-ansi.html
Naja ich hab 5.0.x und da geht oben genanntes leider noch nicht. auch full outer join will nich.

Ist auch alles nich so wichtig. Aber hab morgen Prüfung in DB und wollte die selteneren Kommandows mal selbst nachvollziehen.

Coda
2008-03-02, 20:00:41
Ab 5.0.3 sollte es gehen.

Nasenbaer
2008-03-02, 21:34:35
Ab 5.0.3 sollte es gehen.
Ich hab MySQL 5.0.45 drauf aber FULL OUTER geht nich. :/

Coda
2008-03-02, 21:58:15
Stimmt, gibt's nicht. Warum verschweigen die Heinis das in der Doku?

Nasenbaer
2008-03-03, 15:13:40
Stimmt, gibt's nicht. Warum verschweigen die Heinis das in der Doku?
Warscheinlich kennen die den Standard selbst nicht. ^^