Mailinglisten-Archive |
Wolfgang Skupin schrieb: > Hallo Hannes, > > >> Guten Tag Wolfgang Skupin, >> >> am Donnerstag, 13. März 2008 um 17:20 schrieben Sie: >> >> >>> hallo, >>> habe eine Tabelle `im_source` mit einer Set-spalte `medium` >>> die Set-Werte sind in der Form >>> 'keiner','ein wert','noch ein wert', etwas anderes', >>> usw. eingetragen. >>> für das Select- Query bekomme ich ein array mit >>> dualzahlen array( 2,4,8,16,32, ...); >>> jeder Datensatz kann jede Kombination der Set-Werte enthalten oder nur den >>> Wert 'kein' (1) . >>> nun sollen alle DS ausgewählt werden die >>> etweder min. einen oder x dieser Werte enthalten >>> oder eben alle dieser Werten enthalten ( summe der Arraywerte ) >> >> >>> SELECT `ims`.`id` FROM `im_source` AS `ims` WHERE 1 AND >>> (`ims`.`medium` BETWEEN 2 AND 126 OR `ims`.`medium` = 2 OR `ims`.`medium` = >>> 4 OR `ims`.`medium` = 8 OR `ims`.`medium` = 16 OR `ims`.`medium` = 32 OR >>> `ims`.`medium` = 64 OR `ims`.`medium` = 126 ) ORDER BY >>> `ims`.`id`,`ims`.`Fileinsert` DESC >> 126 oder 128 , 128 waere die richtige 2er Potenz >> > > mein array enthält (2,4,8,16,32,64) > > also in diesem Fall ist Bit 1 und Bit 8 nicht gesetzt > sondern nur Bit 2 bis 7 das macht in der Summe 126 > > leider bekomme ich, wenn nur mit BETWEEN arbeite gleich gar keine > korrekte Werte. wenn du direkt mit den Bitwerten der SET-Spalte arbeiten willst, solltest du immer +0 verwenden, also: `ims`.`medium` + 0 BETWEEN 2 AND 126 eventuell hilft dir ja auch EXPORT_SET() http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_export-set -- Sebastian
php::bar PHP Wiki - Listenarchive