PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Select verschachteln? (http://www.selfphp.de/forum/showthread.php?t=3251)

Sunny 03.02.2003 19:49:10

Select verschachteln?
 
Hallo NG,
folgendes Problem,

eine Datei soll Daten verschiedener Tabellen anzeigen, (z.B. ein Warenkorb aus Tabelle für Produkt 1 und gleichzeitig auch aus Tabelle(n) für Produkt n)

Um die Abfrage nicht zu kompliziert zu machen, habe ich eine Variable $tabelle, die aus einer MYSQL-Tabelle ausgelesen wird,
die Abfrage hierzu:
------------------------------------------------------------------
mysql_select_db($database_pzv_db, $pzv_db);
$query_Recordset1 = "SELECT bestellung.tabelle FROM bestellung ";
$Recordset1 = mysql_query($query_Recordset1, $pzv_db) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
-------------------------------------------------------------------

Das kommt nun in die Variable

$tabelle=$row_Recordset1['tabelle'];
-------------------------------------------------------------------
und die nun wiederum in die eigentliche QUERY

$colname_rsBasket = "0";

if (isset($_SESSION['userid'])) {
$colname_rsBasket = (get_magic_quotes_gpc()) ? $_SESSION['userid'] : addslashes($_SESSION['userid']);
}
mysql_select_db($database_pzv_db, $pzv_db);
$query_rsBasket = sprintf("SELECT bestellung.*, $tabelle.*, preis_id.einzel_prs_EUR, zeits_id.name FROM bestellung, $tabelle, preis_id, zeits_id WHERE bestellung.anzahl >=1 AND bestellung.zeits_id=$tabelle.zeits_id AND bestellung.ausgabe_id=$tabelle.ausgabe AND preis_id.preis_id=$tabelle.preis_id AND $tabelle.zeits_id=zeits_id.zeits_id AND bestellung.session_id=%s", $colname_rsBasket);
$rsBasket = mysql_query($query_rsBasket, $pzv_db) or die(mysql_error());
$row_rsBasket = mysql_fetch_assoc($rsBasket);
$totalRows_rsBasket = mysql_num_rows($rsBasket);
?>

Es klappt auch mit dem Einlesen, nur - er liest immer nur den Eintrag von $tabelle aus dem allerersten Datensatz - dadurch wird immer nur aus dem jeweils ersten Eintrag für $tabelle etwas angezeigt - muss wohl eine Schleife her - oder eine Verschachtelung von SELECT?! Wäre schön, wenn jemand eine Idee hätte....

Viele Grüße Sunny

c4 03.02.2003 21:17:43

Muss zugeben Quelltext nicht weiter beachtet zu haben: Aber immerhin soviel:
Verschachtelte SQL-Abfragen werden erst mit der neuen Version 4 Punkt irgendwas möglich sein. Außer Du hast auf Deinem Server ein kommerzielles Produkt laufen - Oracle & Co....

Sunny 03.02.2003 21:36:00

Hi,
kann für das Verständnis auch versuchen, es zu vereinfachen (den Code hat Dreamweaver produziert und der ist wohl deshalb auch verworrener als nötig...)

Also, ich habe in einem Warenkorb ein SELECT (mit QUERY), das nur ein Wort einliest und zwar den Namen einer Tabelle -

das Ergebnis übergebe ich in einer Variable $tabelle einer weiteren SELECT-Abfrage

Das Problem besteht nun darin, dass er die Variable zwar richtig verarbeitet, aber eben nur für den 1. Datensatz, so dass ich nur aus tabelle 1 bestellen kann, wenn ich mit einem Produkt aus tabelle 1 begonnen habe....

versteht mich einer?!

Gruß Sunny

Ben20 03.02.2003 22:06:03

Äh, zugegebenermaßen nicht so ganz. Nichts desto trotz:


$result = mysql_query("SELECT name FROM tabx");

while($array = mysql_fetch_row($result)) {

$erg1 = mysql_query("SELECT xyz FROM " . $array[0])

}


Das sollte nacheinander alle Werte von xyz aus allen Tabellen die in tabx angegeben sind rausholen!

Sunny 03.02.2003 22:25:31

ok, ich glaube ich schlafe noch mal drüber ;)) - danke bis hierher!

Viele Grüße Sunny

MiH 04.02.2003 09:08:33

du solltest dir mal mysql JOIN ansehen das macht deine abfrage verständlicher! das ganze and zeug nervt etwas. und .* abfragen sind auch nciht die beste lösung.


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:38:19 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.