Suche bestimmte Abfrage für Datenbank...

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
tschekowski
Mitglied
Beiträge: 180
Registriert: 18.05.2003 16:44

Suche bestimmte Abfrage für Datenbank...

Beitrag 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 ?
tschekowski
Mitglied
Beiträge: 180
Registriert: 18.05.2003 16:44

Beitrag 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 ?
Benutzeravatar
MrMind
Mitglied
Beiträge: 464
Registriert: 29.11.2003 17:14
Wohnort: Darmstadt/Odw
Kontaktdaten:

Beitrag von MrMind »

Hast du eigentlich auch ein Echo drinnen ???


Statt ne While würde ich dir ne For-Schleife empfehlen:

Code: Alles auswählen

for($i=0; $i < 15; $i++)
{
    //Anweisung
}

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
Selbst ist der Coder
Coder unter Linux
tschekowski
Mitglied
Beiträge: 180
Registriert: 18.05.2003 16:44

Beitrag 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
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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
Antworten

Zurück zu „Coding & Technik“