Ik heb een probleem met een bitwise operations die ik gebruik:
Ik heb namelijk een entiteit Plaatje en een Entiteit Gallery. Een Plaatje kan opgenomen worden in 1 of meerdere Galleries. Daarvoor heb ik een kolom "ingallerybit" van type INTEGER in de pictures tabel.
Als dus een plaatje opgenomen worden in een gallery doe ik:
update pictures set ingallerybit=ingallerybit+$num where picid=1
$num is dan: 0, 2, 4, 8, 16, 32, 64, enzovoorts (afhankelijk van de Gallery)
Dan kan ik mooi zien welk plaatje in een gallery zit door de volgende query:
select * from pictures where ((ingallerybit & $num) <> 0)
Dat werkt allemaal goed, maar nu zit ik met meer dan 100 galleries en nu past $num niet meer in INTEGER ook BIGINT zal gauw te klein zijn.
Overigens heb ik nog veel meer velden in de tabel "pictures" waar ik deze constructie gebruik:
todaybit, yesterdaybit, postedbit, currentbit en zo'n 15 andere. En als ik een pictures select doe dan zitten al deze velden in het "where" gedeelte.
Ik heb al wat naar andere data types gekeken van mysql maar ik kan niet een soortgelijke vinden die mogelijk een oplossing zou bieden.
Weten jullie een oplossing voor mijn probleem?

Ik heb namelijk een entiteit Plaatje en een Entiteit Gallery. Een Plaatje kan opgenomen worden in 1 of meerdere Galleries. Daarvoor heb ik een kolom "ingallerybit" van type INTEGER in de pictures tabel.
Als dus een plaatje opgenomen worden in een gallery doe ik:
update pictures set ingallerybit=ingallerybit+$num where picid=1
$num is dan: 0, 2, 4, 8, 16, 32, 64, enzovoorts (afhankelijk van de Gallery)
Dan kan ik mooi zien welk plaatje in een gallery zit door de volgende query:
select * from pictures where ((ingallerybit & $num) <> 0)
Dat werkt allemaal goed, maar nu zit ik met meer dan 100 galleries en nu past $num niet meer in INTEGER ook BIGINT zal gauw te klein zijn.
Overigens heb ik nog veel meer velden in de tabel "pictures" waar ik deze constructie gebruik:
todaybit, yesterdaybit, postedbit, currentbit en zo'n 15 andere. En als ik een pictures select doe dan zitten al deze velden in het "where" gedeelte.
Ik heb al wat naar andere data types gekeken van mysql maar ik kan niet een soortgelijke vinden die mogelijk een oplossing zou bieden.
Weten jullie een oplossing voor mijn probleem?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| 4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
8388608
16777216
33554432
67108864
134217728
268435456
536870912
1073741824
2147483647
... |
[ Voor 27% gewijzigd door Verwijderd op 05-07-2005 15:17 ]