von DPunch » Fr, 29.10.2010 21:20
Aloha
1.)
Was genau bewirkt
und warum tust Du das? Wird hier die Tabelle "Einkauf" quasi dupliziert und die Dublette als "a" bezeichnet?
Das ist die abgekürzte Syntax für
Ich vergebe also lediglich einen Alias für die Tabelle "Einkauf", so wie man es auch bei Spalten machen kann
Für Zugriffe auf die Tabelle kann ich von da an das vergebene Alias verwenden. Bei "Einkauf" vielleicht erstmal nicht so wirklich beeindruckend, aber wenn man desöfteren mit Datenbanken arbeitet (vor allem solchen, die man nicht selber entworfen hat), kann es vorkommen, dass eine Tabellenname 20 oder mehr Zeichen hat - das ist nervig zu schreiben und auch nicht sonderlich übersichtlich für spätere Wartungs- / Anpassungsarbeiten an Abfragen.
Zudem hat das noch eine Bedeutung bei Deiner 3. Frage.
2.)
Warum greifst Du dann in (...) auf die Dublette zu?
S.o., es handelt sich nicht um eine Dublette, sondern um die Tabelle "Einkauf", die mit dem Alias "a" versehen ist.
Das "a"."Einkaufsdatum" wird simpel ausgedrückt bei der Auswertung des SQL-Statements wieder in "Einkauf"."Einkaufsdatum" zurückübersetzt
3.)
Was bewirkt
Code: Alles auswählen
AND "a"."Einkaufsdatum" = (SELECT MAX("Einkaufsdatum") FROM "Einkauf" WHERE "a"."Name" = "Name")
Das Stichwort dazu ist "Korrelierte Unterabfragen" - im Internet wirst Du haufenweise Erklärungen dazu finden (z.B.
MySQL Referenzhandbuch).
Aloha
1.)
[quote]Was genau bewirkt
[code]"Einkauf" "a", [/code]
und warum tust Du das? Wird hier die Tabelle "Einkauf" quasi dupliziert und die Dublette als "a" bezeichnet?[/quote]
Das ist die abgekürzte Syntax für
[code]"Einkauf" AS "a"[/code]
Ich vergebe also lediglich einen Alias für die Tabelle "Einkauf", so wie man es auch bei Spalten machen kann
[code]SELECT "Einkaufsdatum" AS "Datum"[/code]
Für Zugriffe auf die Tabelle kann ich von da an das vergebene Alias verwenden. Bei "Einkauf" vielleicht erstmal nicht so wirklich beeindruckend, aber wenn man desöfteren mit Datenbanken arbeitet (vor allem solchen, die man nicht selber entworfen hat), kann es vorkommen, dass eine Tabellenname 20 oder mehr Zeichen hat - das ist nervig zu schreiben und auch nicht sonderlich übersichtlich für spätere Wartungs- / Anpassungsarbeiten an Abfragen.
Zudem hat das noch eine Bedeutung bei Deiner 3. Frage.
2.)
[quote]Warum greifst Du dann in (...) auf die Dublette zu?[/quote]
S.o., es handelt sich nicht um eine Dublette, sondern um die Tabelle "Einkauf", die mit dem Alias "a" versehen ist.
Das "a"."Einkaufsdatum" wird simpel ausgedrückt bei der Auswertung des SQL-Statements wieder in "Einkauf"."Einkaufsdatum" zurückübersetzt
3.)
[quote]Was bewirkt
[code] AND "a"."Einkaufsdatum" = (SELECT MAX("Einkaufsdatum") FROM "Einkauf" WHERE "a"."Name" = "Name")[/code][/quote]
Das Stichwort dazu ist "Korrelierte Unterabfragen" - im Internet wirst Du haufenweise Erklärungen dazu finden (z.B. [url=http://dev.mysql.com/doc/refman/5.1/de/correlated-subqueries.html]MySQL Referenzhandbuch[/url]).