PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   dynamische Unterabfrage in mysql (http://www.selfphp.de/forum/showthread.php?t=17404)

meandor 10.08.2007 09:33:37

dynamische Unterabfrage in mysql
 
Hallo

Folgendes Problem tritt bei mir auf.

Ergebnis einer SQL Abfrage für Standorte ergibt zum Beispiel : 3, 4, 7, 10

wie kann ich jetzt dieses Ergebnis nutzen damit in meiner nächsten SQL Abfrage genau diese Zahlen wieder genutzt werden.

Habe versucht die Zahlen in einem Array zu speichern aber dann funktioniert die Abfrage nächste SQL Abfrage nicht.

Select id, standort, FROM liste WHERE standort = $ortids[] //also 3, 4, 7, 10

wie kann ich das lösen?

mit besten Grüßen
meandor

meandor 10.08.2007 09:51:45

AW: dynamische Unterabfrage in mysql
 
Nachtrag:

Die Abfrage soll die Zahlen bekommen die ich in als Ergebnis vorher bekommen habe.
Irgendwie scheint aber das nicht über ein Array zu klappen er kontrolliert dann nicht alle Zahlen.

"Select id, standort, FROM liste WHERE standort = $ortids[]";

wenn ich konkret eine Zahl angebe funktioniert es. z.B.
"Select id, standort, FROM liste WHERE standort = 3";

wenn ich ein konkretes Element aus dem Array gebe dann auch: z.B
"Select id, standort, FROM liste WHERE standort = $ortids[2]";

was mache ich falsch????

Indyk 10.08.2007 09:57:41

AW: dynamische Unterabfrage in mysql
 
das problem ist das bei sql wahrscheinlich
Code:

WHERE standaort = array()
ankommt, deshalb sollte man sich immer das statement ausgeben lassen.
Du musst schon einzelnd abfragen (mit AND) oder es mit einer php schleife lösen

meandor 10.08.2007 10:06:25

AW: dynamische Unterabfrage in mysql
 
"Select id, standort, FROM liste WHERE standort = $ortids[0]" AND standort = $ortids[1] AND standort = $ortids[2]" usw......;

aber ich weiß ja halt nicht wie viele Element hinterher in dem Array sind deshalb wird das dann unübersichtilich und es gibt Fehlermeldungen sobald das Array kleiner ist als in der Abfrage.

Zum Schluss muss eine Anweisung stehen die der mysql_query($sql) übergeben wird.

Was muss ich tun????

Raketenmann 10.08.2007 12:16:19

AW: dynamische Unterabfrage in mysql
 
Zitat:

Zitat von meandor (Beitrag 105112)
"Select id, standort, FROM liste WHERE standort = $ortids[0]" AND standort = $ortids[1] AND standort = $ortids[2]" usw......;

Mit deinem Beispiel Array wird das da auf keinen Fall funktionieren. Keiner deiner Standorte wird gleichzeitig =3 und =4 sein...

Statt AND kann man auch OR verwenden, je nach Sinn

Zitat:

Zitat von meandor (Beitrag 105112)
aber ich weiß ja halt nicht wie viele Element hinterher in dem Array sind deshalb wird das dann unübersichtilich und es gibt Fehlermeldungen sobald das Array kleiner ist als in der Abfrage.

Dann kannst du das Array in einer Schleife durchlaufen und für jedes Element eine eigenen Query abschicken. Klingt vielleicht nicht besonders elegant, aber bei einer Liste die mal länger und mal kürzer ist...

vt1816 10.08.2007 12:19:44

AW: dynamische Unterabfrage in mysql
 
PHP-Code:


$sql 
"SELECT id, standort FROM liste WHERE standort IN( $ortids[0], ...,  $ortids[n])"

sollte Dir weiterhelfen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:46:41 Uhr.

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