Marek Kilimajer wrote:

[EMAIL PROTECTED] wrote:

I have table with products. In column categories are listed numbers of categories a product belongs, like:
1. 21,
2. 35, 8, 72, 1, 4,
3. 23, 11, 48,
4. 65,
5. 11,
6. 23,
7. ...
(somebody else created the table this way and I have to keep it for the moment)
Now, I have to list all products that belongs to category with cat. number, e.g. 11.


If I use query:
select * from products where categories like '11, '
product no. 5 will be listed but not product no. 3

select * from products where categories like '%11,% '
will list products 3 and 5 but
select * from products where categories like '%1,% '
will list products 2, 3 and 5 too - and, 3 & 5 are wrong.

I got from friend this solution:
select * from products where categories REGEXP '(^".$cat_num."|, ".$cat_num.")'


As each record has trailing comma, include that too:
(^2,|, 2,)

Would it be that difficult to convert the column to SET Type?
http://dev.mysql.com/doc/mysql/en/set.html

Can't do that because there is 60-80 caegories and SET is limited on 64. And by deleting/adding new category have to change to SET array of values. That's not solution. But thanks on idea ;)





it works just fine if I use 2 digit cat number. e.g. 11 or 26 or 62. But if I select for cat. num. 2 it will list all products from categories 2 and everything between 20 and 29. 32 or 62 will not be listed.

Confusing, ha?

Thanks for any help!

-afan



-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to