Seite 1 von 1
Suche bestimmte Abfrage für Datenbank...
Verfasst: 22.12.2004 17:45
von tschekowski
Hi,
Ich habe eine Tabellenstrauktur in meiner datenbank die wie folgt aussieht:
Menge_1 Artnr_1 Menge_2 Artnr_2 Menge_3 Artnr_3 .....Menge_15 Artnr_15
der artikel kann in der zeile maximal nur einmal stehen - man weiß aber nicht an welcher stelle...
menge_10 gehört z.B zu artnr_10 wenn artnr_10 die gesuchte artikelnummer ist muss der wert des feldes Menge_10 genommen werden...
Die Mengen aller Zeilen ergeben dann die gesamtmenge die ich suche...
wie kann ich eine solche Abfrage machen ?
Verfasst: 22.12.2004 19:48
von tschekowski
so hab jetzt mal eine Abfrage dafür gemacht:
Code: Alles auswählen
$n=1;
while (n<=15) {
$n1=$n+1;
$x=mysql_query("SELECT SUM(Menge_.$n1) FROM Bestellungsdaten WHERE Artnr_.$n1 like '$artnr'");
$x1=mysql_fetch_array($x);
$m.$n1=$x1[Menge_.$n1];
$n1=$n;}
$m1+$m2+$m3+$m4+$m5+$m6+$m7+$m8+$m9+$m10+$m11+$m12+$m13+$m14+$m15=$gesamtanzahl;
Das Problem ist jetzt nur , dass nur der HTML-Kopf ausgegeben wird und der Rest nicht - ne Fehlermeldung gibts aber nicht.
Wo liegt der Fehler in meiner Abfrage ?
Verfasst: 23.12.2004 00:06
von MrMind
Hast du eigentlich auch ein Echo drinnen ???
Statt ne While würde ich dir ne For-Schleife empfehlen:
Warum verwendest du eigentlich Like??? Sind denn in der Spalte mit der Artikelnummer nochmehr oder wie????
Ich verstehe deinen Datenbankaufbau nicht, wenn du einige Beispiel Einträge mal auflisten könntest (also keine die du wirklich hast, nur das Schema ist wichtig), dann könnte man dir wesentlich besser helfen.
Mfg
MrMind
Verfasst: 23.12.2004 11:04
von tschekowski
also like habe ich genommen weil die artikelnummer aus einem buchstaben und 4 zahlen besteht...echo hab ich weiter unten drin....
Menge_1 Artnr_1 Menge_2 Artnr_2
5 A001 2 A111
7 X666 1 B555
also menge und artnr gehen bis 15 so weiter - was ich jetzt auslesen will ist die summe aller mengen z.B der Artikelnummer A001 - dafür muss im prinzip nur die mengen addieren z.B bei Artnr_1 = A001 die Menge_1
Verfasst: 23.12.2004 20:41
von Pyramide
Bevor du versuchst, mit diesem verkorksten Datenbankdesign zu arbeiten, solltest du dich mal über Normalisierung / Normalformen informieren. Wenn du das verstanden und umgesetzt hast, müsste deine Datenbank hinterher z.B. so aussehen:
Artikel: artikel_id, artikel_name, artikel_preis, ...
Bestellungen: bestellungs_id int, bestelldatum, bestellperson, ...
Bestellungen_Artikel: bestellungs_id, artikel_id, menge, ...
Das hat den Vorteil, daß du nicht nur dein Ursprungsproblem (mit einem unique key), sondern auch diverse andere Sachen (z.B. wieviele Artikel enthält eine Bestellung, wie hoch ist der Gesamtpreis) ganz einfach mit einer einzelnen SQL-Anfrage lösen kannst. Ausserdem bist du a) nicht auf 10 artikel beschränkt und c) verschwendest bei weniger als 10 Artikeln keinen Platz
Verfasst: 28.12.2004 17:18
von King Crusty