Mailinglisten-Archive |
Hi,
> Ich habe folgende Abfrage:
>
> select * from table where (forum_id = '20' OR forum_id ='22' OR forum_id
> ='23' OR forum_id ='24 OR forum_id ='27' usw.)
>
> Das ganze sind 30 forum_id, immer beginnend mit forum_id = '??' OR.
> Kann ich das ganze denn nicht irgendwie vereinfachen. Die ganzen Zahlen
> stehen in PHP in einem Array.
> Irgendwie so: where forum_id = Array();
> Das Problem ist folgendes, dass in der Tabelle doppelte Einträge vorhanden
> sind und ich deshalb die Ursprungstabelle mit dem forum_ids nicht mit
> LEFT_JOIN verbinden kann.
> So ist das kein Problem. Wenn ein Wert doppelt auftaucht, setzt
> ich einfach
> den Wert hinter dem vorigen Wert im entsprechenden Array.
Warum kompliziert wenn es auch einfach geht.
SELECT * FROM table WHERE from_id IN (20,22,23,24,27 etc.)
Da die IDs in einem Array stehen musst du Sie vorher mit
implode(",",$forum_ids)
durchlaufen, ggf. solltest du noch ein array_unique durchführen, um alle
doppelten IDs
rauszufiltern.
Links:
http://www.php.net/manual/en/function.array-unique.php
http://www.php.net/manual/en/function.implode.php
MfG
Fabian Martin
---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive