herz4 hat geschrieben:@Neujuenger2010
Du scheinst mir, Dein Problem eleganter gelöst zu haben als durch meinen Vorschlag, der Dir schwer fiel zu verstehen.
In Wirklichkeit unterscheiden sie sich nach meiner Einschätzung nur syntaktisch - zu Deinen Gunsten!
Weiter so, immer besser sein wollen als die Alten ...
René
*rotwerd*
Danke!
Allerdings interessiert mich jetzt doch, wie und wozu man Unterabfragen einsetzen kann. Mein hier geschiildertes (und nun gelöstes) Problem, war ja quasi bei einer recht simplen Abfrage.
Meine Datenbank wird zukünftig noch etliche weitere Tabellen mit diversen Kundeninfos enthalten. Dann brauche ich auch komplexere Abfragen.
Es wäre daher sehr nett, wenn Du mir schon mal einen Hinweis geben könntest, in welchen Fällen Unterabfragen sinnvoll sein können und wie sie "funktionieren". Dann kann ich später rechtzeitig in die richtige Richtung denken...
Eine Frage habe ich zusätzlich noch zu der Syntax:
Ich habe meine Abfrage mal etwas "entrümpelt". Sie sieht jetzt so aus:
Code: Alles auswählen
select
"Kunden"."Name",
"Kunden"."Vorname",
"Kunden"."Adresszusatz",
"Kunden"."Strasse",
"Kunden"."Hausnummer",
"Kunden"."PLZ",
"Ort"."Ort",
"Anrede"."Anrede",
"Titel"."Titel",
"Briefanrede"."Briefanrede"
from
"Kunden"
join "Anrede" on "Kunden"."Anrede" = "Anrede"."Anrede-ID"
join "Ort" on "Kunden"."Ort" = "Ort"."Ort-ID"
join "Briefanrede" on "Kunden"."Briefanrede" = "Briefanrede"."Briefanr-ID"
left join "Titel" on "Kunden"."Titel" = "Titel"."Titel-ID"
where
"Kunden"."Kategorie" = 1
Das finde ich persönlich etwas übersichtlicher, da jetzt "mein" wichtiges Filterkriterium "Kategorie" quasi alleine im "where"-Ausdruck steht. Ich seh also besser, was ich mit der Abfrage eigentlich suche.
Zudem kann ich problemlos (es funktionierte im test zumindest problemlos...) in die Ausgabe weitere Tabellen-Verknüpfungen einbinden, in denen es das gleiche (Leer-)Problem wie bei "Titel" gibt. Z.B. Geschlecht (nur als Test...):
Code: Alles auswählen
select
"Kunden"."Name",
"Kunden"."Vorname",
"Kunden"."Adresszusatz",
"Kunden"."Strasse",
"Kunden"."Hausnummer",
"Kunden"."PLZ",
"Ort"."Ort",
"Anrede"."Anrede",
"Titel"."Titel",
"GeschlRechtsform"."GeschlRechtsform"
from
"Kunden"
join "Anrede" on "Kunden"."Anrede" = "Anrede"."Anrede-ID"
join "Ort" on "Kunden"."Ort" = "Ort"."Ort-ID"
left join "GeschlRechtsform" on "Kunden"."Geschlecht/Rechtsform" = "GeschlRechtsform"."Geschl-ID"
left join "Titel" on "Kunden"."Titel" = "Titel"."Titel-ID"
where
"Kunden"."Kategorie" = 1
Ist das von der Logik und Syntax her korrekt?
Bitte bremst mich und schubst mich in die richtige Richtung, falls ich hier Unsinn lerne/probiere!
Danke!