Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
SELECT Abfrage für Feld mit Kommagetrennten Nummern [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
SELECT Abfrage für Feld mit Kommagetrennten Nummern


 
til2020
09-03-2010, 15:09 
 
Hallo alle zusammen,

folgendes Szenario.

Ich habe eine Tabelle mit einem Feld "Seiten IDs".
Z.B. 1,2,5,8,9

Nun möchte ich meine Agbfrage nach einer bestimmten Zahl filtern. Die "2".

Ich habe dazu folgendes gemacht.

$result = mysql_db_query($database, "select * from table WHERE level = '1' AND siteid IN ('2') ORDER BY datetime asc") or die ("Database Error");

Leider gibt mir das kein Ergebnis.

Hat jemand einen kleinen Tipp für mich?

 
TobiaZ
09-03-2010, 15:18 
 
Ich habe eine Tabelle mit einem Feld "Seiten IDs".
Z.B. 1,2,5,8,9Ganz schlechte Idee.

Das Thema hatten wir schon sehr oft. Und immer konnten wir den Threadstarter davon überzeugen, dass die Normalisierung der richtige Weg gewesen wäre.


Ich habe dazu folgendes gemacht.

$result = mysql_db_query($database, "select * from table WHERE level = '1' AND siteid IN ('2') ORDER BY datetime asc") or die ("Database Error");
Leider gibt mir das kein Ergebnis. Ja, du würdest auch nicht behaupten, dass "1,2,5,8,9" in 2 drin ist, oder? Andersrum vielleicht, aber so nicht! ;)

 
AmicaNoctis
09-03-2010, 17:47 
 
Hallo,

das Problem daran ist, dass ein LIKE-Vergleich mit '%2%' auch auf '...,524,...' passen würde und einer mit '%,2,%' passt nicht mehr auf '2,3,4,...', weil das Komma davor fehlt. Das ließe sich zwar beheben, aber wie TobiaZ schon sagte, hättest du das Problem mit einer normalisierten DB ohnehin nicht.

Gruß,

Amica

 
til2020
09-03-2010, 22:44 
 
Hallo Amica,

:danke: für deine Antwort.

Das macht natürlich sinn! Dann muss ich jetzt erstmal umdenken.

Viele Grüße
til2020

 
Slava
11-03-2010, 19:06 
 
Normalisierung ist natürlich immer richtig.
where find_in_set(2,siteid)>0
könnte als vorübergehende Lösung betrachtet werden

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:44 Uhr.