Sven Rautenberg: Join

Beitrag lesen

Moin!

So geht es auch nicht:

Select Distinct UPPER(Substring(Branchen.Branche,1,1))From Branchen JOIN ShopBranchen ON Branchen.BranchenID=ShopBranchen.BranchenID JOIN ArtikelListe ON ShopBranchen.ShopID=ArtikelListe.ShopID Where ArtikelListe<>-1 Order by UPPER(Substring(Branchen.Branche,1,1))

da bekomme ich kein Treffer.

Ja soviel anders kann man dies nicht kombinieren.
Wie gesagt ohne die Bedingung ArtikelListe<>-1 kommt dabei etwas raus, aber damit nichts.

Was kommt raus? Doch nur eine Liste von Buchstaben, welche in der Distinct-Spalte enthalten sind.

Wenn du mit WHERE arbeitest, muß das Feld, welches abgefragt werden soll, auch dann vorhanden sein, wenn du kein WHERE benutzt. Da du aber nur eine Spalte selektierst, und die nicht LKZ heißt, kannst du logischerweise die Spalte LKZ nicht abfragen.

Der Tipp mit phpMyAdmin ist wirklich gut: Erstmal eine Tabelle selektieren (dabei mit * arbeiten). Gucken, was rauskommt. Dann einen JOIN dranhängen, gucken, was rauskommt. Nächsten JOIN dran, und gucken, was rauskommt. Dann DISTINCT einfügen und gucken, was rauskommt. Dann mit WHERE filtern und gucken, was rauskommt.

Du hast dank "DISTINCT" übrigens noch ein anderes Problem, nämlich das der Vermischung. DISTINCT faßt ja alle Spalten gleichen Inhalts zu einem Eintrag zusammen. Was passiert, wenn du zwei Spalten hast, die per Distinct zusammenfallen, deren LKZ aber unterschiedlich ist? Da du lediglich den ersten, großgemachten Buchstaben per DISTINCT zusammenfaßt, gibts ja nur 26 Ergebniszeilen, aber sicherlich mehr als 26 Einträge mit unterschiedlichen LKZ. Du hast also das Problem, daß deine LKZ durchaus falsch sind bzw. nicht so ganz richtig.

Guck mit phpmyadmin (oder sonst einem Tool), welche Einzel- und Sammel-Ergebnisse deine Abfragen bringen - erst dann siehst du, daß du vermutlich die falsche Frage an die Datenbank stellst.

- Sven Rautenberg