vci
28-01-2010, 12:02
Hallo zusammen,
ich sitze hier vor einem SQL-Problem und würde es gerne elegant lösen.
Es geht darum 3 Abfragen zu machen, und wenn jeweils eine Abfrage leer ist eine andere Abfrage zu machen. D.h. UNION funktioniert nicht, da man hier ja eben nicht leere Teilmengen abfangen kann (oder doch?)
Im Moment würde der Code dann so aussehen:
Abfrage 1 - IF-Teil-Abfrage 1
Ausgabe Abfrage
Abfrage 2 - IF-Teil-Abfrage 2
Ausgabe Abfrage
Abfrage 3 - IF-Teil-Abfrage 3
Ausgabe Abfrage
Wobei Ausgabe der Abfrage immer der gleiche Code ist. Das wird natürlich extrem unschön, wenn die Ausgabe der Abfrage 50 Zeilen sind :-)
Was ich nun suche ist Folgendes:
// Abfrage 1
$sql = select ...
$result1 = mysql_query($sql, $db);
if (!$result) $sql = select andere Abfrage;
// Abfrage 2
$sql = select ...
$result2 = mysql_query($sql, $db);
if (!$result2) $sql = select andere Abfrage;
// Abfrage 3
$sql = select ...
$result3 = mysql_query($sql, $db);
if (!$result3) $sql = select andere Abfrage;
// Zusammenfuehren:
$result = $result1.$result2.$result3
// Ausgeben
while ($myrow = mysql_fetch_array($result) {
...
}
Leider funktioniert das so nicht. Gibt es irgendwie eine Append-Row-Funktion in PHP? Mit SQL-Mitteln laesst sich die Abfrage leider wirklich nicht hinbiegen!
Natuerlich ist die Anzahl und Bezeichnung der Felder gleich!
ich sitze hier vor einem SQL-Problem und würde es gerne elegant lösen.
Es geht darum 3 Abfragen zu machen, und wenn jeweils eine Abfrage leer ist eine andere Abfrage zu machen. D.h. UNION funktioniert nicht, da man hier ja eben nicht leere Teilmengen abfangen kann (oder doch?)
Im Moment würde der Code dann so aussehen:
Abfrage 1 - IF-Teil-Abfrage 1
Ausgabe Abfrage
Abfrage 2 - IF-Teil-Abfrage 2
Ausgabe Abfrage
Abfrage 3 - IF-Teil-Abfrage 3
Ausgabe Abfrage
Wobei Ausgabe der Abfrage immer der gleiche Code ist. Das wird natürlich extrem unschön, wenn die Ausgabe der Abfrage 50 Zeilen sind :-)
Was ich nun suche ist Folgendes:
// Abfrage 1
$sql = select ...
$result1 = mysql_query($sql, $db);
if (!$result) $sql = select andere Abfrage;
// Abfrage 2
$sql = select ...
$result2 = mysql_query($sql, $db);
if (!$result2) $sql = select andere Abfrage;
// Abfrage 3
$sql = select ...
$result3 = mysql_query($sql, $db);
if (!$result3) $sql = select andere Abfrage;
// Zusammenfuehren:
$result = $result1.$result2.$result3
// Ausgeben
while ($myrow = mysql_fetch_array($result) {
...
}
Leider funktioniert das so nicht. Gibt es irgendwie eine Append-Row-Funktion in PHP? Mit SQL-Mitteln laesst sich die Abfrage leider wirklich nicht hinbiegen!
Natuerlich ist die Anzahl und Bezeichnung der Felder gleich!