doppelte Ausgabe

quidnovi

Erfahrenes Mitglied
Hi folks

Habe folgendes Problem und bitte Euch um Eure Hilfe.
Meine DB besteht aus 18 Tables. Meine Abfrage schaut wie folgt aus:

$abfr = "select * from produkte inner join farbe on produkte.farbe_id=farbe.id inner join einheiten on produkte.einheit_id=einheiten.id where artnr like
'%50.01.EK.%.%.50.V0%' order by mass";
Ich erhalte schon das gewünschte Ergebnis, nur sind die meisten Ausgaben doppelt ! :(
Ich muss hier 2 Platzhalter verwenden - und da könnte evtl. der Fehler liegen. Habe mich im Internet und auf mysql.de diesbezüglich umgeschaut, die Anzahl der erlaubten Platzhalter aber nirgendwo gefunden (oder überlesen).
Hoffe ihr könnt mir da auf die Sprünge helfen

THX inzwischen
 
Die Anzahl der Platzhalter ist unbegrenzt :)

und doppelte Ausgaben kann man mit DISTINCT unterbinden

Select distinct * from ...........
 
Hi Melmager
Vielen Dank für Deine Antwort.
Mit 'distinct' hab' ich schon vorher probiert - mit dem gleich enttäuschenden Ergebnis. Wenn ich's richtig verstanden hab', so erkennt distinct doppelte Einträge in der Tabelle, das liegt in diesem Fall aber nicht vor, denn die Artikelnummern sind einzigartig

$abfr = "select distinct * from produkte inner join farbe on produkte.farbe_id=farbe.id inner join einheiten on produkte.einheit_id=einheiten.id where artnr like '%10.%.LS.%.%.70.V0%' ";
Ergebnis:
10.06.LS.30.15.70.V0 Lochschiene verzinkt 30/15mm 2 lfm 1 Stk. 8.52
10.04.LS.41.21.70.V0 Lochschiene verzinkt 41/21mm 3 lfm 1 Stk. 21.54
10.04.LS.41.21.70.V0 Lochschiene verzinkt 41/21mm 3 lfm 1 Stk. 21.54
10.07.LS.30.15.70.V0 Lochschiene verzinkt 30/15mm 3 lfm 1 Stk. 12.78
10.07.LS.30.15.70.V0 Lochschiene verzinkt 30/15mm 3 lfm 1 Stk. 12.78
10.08.LS.30.15.70.V0 Lochschiene verzinkt 30/15mm 4 lfm 1 Stk. 17.04
10.08.LS.30.15.70.V0 Lochschiene verzinkt 30/15mm 4 lfm 1 Stk. 17.04

Kannste damit etwas anfangen?
 
nur sind die meisten Ausgaben doppelt !
-snipp-
das liegt in diesem Fall aber nicht vor, denn die Artikelnummern sind einzigartig

hmm die beiden Aussagen widersprechen sich einwenig :)

aber stimmt bei disinct muss alles gleich sein damit er rausgefiltert wird
wenn nur ein feld gleich ist und er entsprechende doppelte Einträge
nicht anzeigen soll dann nimmt man -> GROUP BY tabellenname
 
Hallo,

normalerweise treten solche Phänomene beim falschen Join Typ auf. So kann es sein, das jeder Datensatz in der Haupttabelle so oft wiederholt wird, wie es Datensätze in der Detailtabelle gibt.

Ich weiss jetzt nicht ganz genau, wie sich 'inner join' verhält, ich benutze in solchen Fällen aber lieber 'left join'. Einfach mal ausprobieren, also:

Code:
$abfr = "select * from produkte left join farbe on produkte.farbe_id=farbe.id left join einheiten on produkte.einheit_id=einheiten.id where artnr like '%10.%.LS.%.%.70.V0%' ";


Grüße
Thomas
 
Zurück