phpbar.de logo

Mailinglisten-Archive

[php] query für Setwerte

[php] query für Setwerte

Wolfgang Skupin webmaster at iwos.de
Fre Mar 14 09:40:19 CET 2008


hallo Sebastian,

>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()
>


danke für den Hinweis mit +0 , das hatte ich wohl überlesen
EXPORT_SET() schau ich mir gleich noch an.


Grüsse
Wolfgang Skupin


php::bar PHP Wiki   -   Listenarchive