SQL-Abfrage für DropDown-Liste

vs_wallis

Benutzer
Beiträge
6
Ich habe 5 Tabellen erstellt:

autosock_modell
id_autosock_modell autosock_modell
1 AutoSock HP 540
...

reifenbreite
id_reifenbreite reifenbreite
1 125
2 135
3 145
4 155
...

profil
id_profil profil
1 25
2 30
...
12 80

durchmesser
id_durchmesser durchmesser
1 12“
2 13“
...

size_finder
id_size_finder id_autosock_modell id_reifenbreite id_profil id_durchmesser
1 1 4 10 1
2 1 4 12 1
3 1 2 12 2
4 1 3 12 2
5 1 4 9 2
6 1 4 10 2

Der Benutzer wählt sein Modell via DropDow aus.
Zuerst die Reifenbreite und anhand dieser bekommt er die Auswahl der verschieden Profile. Wählt er als zweiten Schritt das Profil aus, sollte er ein Auswahl der Durchmesser erhalten.

Auswahl Reifenbreite und Profil klappt eigentlich aber sobald ich das Profil auswähle erhalt ich eine falsche Auswahl oder anders gesagt zu viele Datensätze.

Hier ein Beispiel wie es sein sollte (Datensatz -> size_finder -> 3):
Reifenbreite: 135 (id_reifenbreite -> 2)
Profil: 80 (id_profil -> 80)
Durchmesser: 13“ (id_durchmesser -> 2)

Hier gibt er mir folgendes aus:
Reifenbreite: 135
Profil: 80
Durchmesser: 12“ | 13“

Irgendwo hackt es bei meiner SQL-Abfrage. Kann mit jemand eine Tipp geben. Oder ich mache einen kompletten Überlegungsfehler bei der Tabellenerstellung.

Hier noch der Link zur Testseite für den Size-Finder

AutoSock ist eine textile “Socke” für Reifen
 
Werbung:
Das habe ich natürlich voll vergessen.
SELECT durchmesser, autosock_modell FROM durchmesser JOIN autosock_modell WHERE id_durchmesser IN (SELECT id_durchmesser FROM size_finder WHERE id_profil IN ('$profil')) GROUP BY durchmesser
 
Du joinst 2 Tabellen, aber ohne JOIN-Condition. Vielleicht macht MySQL daraus dann einen CROSS-Join und keinen Fehler, wie es richtig wäre (MySQL macht ja mehr falsch als man sich in Fieberträumen zusammenspinnen kann). Dazu kommt, daß offensichtlich ein JOIN zwischen durchmesser und autosock_modell Bullshit ist, ich sehe da auch keine sinnvolle JOIN-Condition.
Wenn die Tabellen korrekt mit FOREIGN KEY - Constraints angelegt sind, willst Du vermutlich eher mit size_finder anfangen und den Rest der Tabellen jeweils via FK & PK dazujoinen und Deine Auswahlkriterien in das WHERE packen.
 
Code:
select ... from size_finder left join autosock_modell on size_finder.id_autosock_modell=autosock_modell.id_autosock_modell left join ... where ...

... mal als Ansatz.
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben