PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : komplizierte mySql Abfrage zu lösen


andreaskf
15.07.2009, 16:21:40
Hallo.

Benötige Hilfe bzw. eine Idee wie ich eine Abfrage der Datenbank umsetzen kann.
Folgendes liegt vor:

Datenbankwerte
[produkt][option1][option2]

[option1] kann die Werte 1-7 enthalten
[option2] kann die Wete 100-700 enthalten

Nun muß ich jede Variante für einen Produktexport haben.
Beispiel der Ausgabe wenn option1 unterschiedliche Werte hat:

Datenbank:
[produkt][option1][option2]
001;1;100
001;1;200
001;2;999
001;2;998
001;2;997

Ausgabe CSV:
produkt;option1,option2
001;100,999
001;200,999
001;100,998
001;200,998
001;100,997
001;200,997

Also jedes Produkt mit Option1 soll jedes Produkt Option2 zugeordnet werden, jedoch nur wenn vorhanden. Nicht alle Produkte haben unterschiedliche Optionen.
Die unterschiedlichen Produktnummern habe ich als Array (=$prod_id) vorliegen.

Wer kann mir helfen da einen Lösungsweg zu finden ?

miG

ConnectionReset
16.07.2009, 16:10:48
Hallo,
ich würde das außerhalb von SQL lösen.
einfach zwei geschachtelte foreach schleifen


foreach($option1_array as $option1){
foreach($option2_array as $option2){
echo $otpion1.$option2;
}
}


kind regards

andreaskf
16.07.2009, 17:29:18
Hallo ConnectionReset.

Das nenn ich mal eine Idee.... !

Habe es Schritt für Schritt versucht und ausgebaut, und siehe da: 1a hat es geklappt.

Zunächst alle Werte in entsprechende Arrays eingelesen. Dann brauchte ich nur noch 2 For-Next Schleifen drum herum legen, damit ich auch wirklich alle Varianten ausgeben konnte.

So sieght es nun in etwa aus:
for($first=1; $first<8; $first++){
for($seco=($first+1); $seco<8; $seco++){
if(count($option1[$first])>=1 && count($option2[$seco])>=1) {
foreach($option1[$first] as $option1){
foreach($option2[$seco] as $option2){
echo $option1.','.$option2.'<br>';
}}}}}

Die Ausgabe per echo baue ich nun in die benötigten Exportzeilen um, und exit;

Prima - solche Hilfe ist wirklich zu empfehlen.

Nachtrag:
Habe so natürlich nur die getroffen, die in mindest 1 Eintrag in beiden Optionen haben, aber nicht die, welche nur in einer Option drin sind. Das habe ich durch einen kleinen Zähler gelöst. Wenn also keine Zeile für den Export eingerichtet wurde, habe ich einfach noch alle fehlenden abgefragt.

ConnectionReset
17.07.2009, 09:23:20
OK, ich hätte folgendes vorgeschlagen.


if(!empty($option[$first] && !empty($option[$seco])) {
foreach($option1[$first] as $option1){
foreach($option2[$seco] as $option2){
echo $option1.','.$option2.'<br>';
}
}
}


Besten Gruß