Hola Scorpiatus:
Cita: En el ejemplo, debería devolverme:
ID: 2,3,1
No termino por identificar por qué dices que te debe regresar los registros en este orden. Creo que hay un error en los datos pero veamos si estoy en lo correcto. Según lo que entendí el #numero representa el orden en que deberían presentarse cada producto por categoría. En el ejemplo SI SÓLO TOMAMOS EN CUENTA LOS DATOS DE
CATE_1 tendríamos los siguientes datos:
[HIGHLIGHT="SQL"]
Código SQL:
Ver originalID | Producto | Categorias
----+------------------+---------------------------------------
1 | producto 1 | cate_1#3
2 | producto 2 | cate_1#3
3 | producto 3 | cate_1#2
como vez NO EXISTE EN TUS REGISTROS NINGÚN REGISTRO CON
CATE_1#1, por lo tanto el orden en que debería presentar los datos según yo sería
3, 1, 2 para este ejemplo. Esto podrías lograrlo más o menos así:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.14 sec)
-> (2, 'producto 2', 'cate_2#1 cate_5#6 cate_1#3'),
-> (3, 'producto 3', 'cate_1#2');
Query OK, 3 rows affected (0.02 sec)
+------+------------+----------------------------+
| ID | Producto | Categorias |
+------+------------+----------------------------+
| 1 | producto 1 | cate_1#3 cate_4#2 |
| 2 | producto 2 | cate_2#1 cate_5#6 cate_1#3 |
| 3 | producto 3 | cate_1#2 |
+------+------------+----------------------------+
(Categorias)), ' ', 1) orden
+------+------------+----------------------------+----------+
| ID | Producto | Categorias | orden |
+------+------------+----------------------------+----------+
| 3 | producto 3 | cate_1#2 | cate_1#2 |
| 1 | producto 1 | cate_1#3 cate_4#2 | cate_1#3 |
| 2 | producto 2 | cate_2#1 cate_5#6 cate_1#3 | cate_1#3 |
+------+------------+----------------------------+----------+
Ahora bien, cuando dices
Cita: pueden pertenecer a un número infinito de categorías.
El modelo deja de ser práctico, ya que tendrás un enorme desperdicio de recursos al tener que manejar una columna de tipo texto enorme. En lugar de esto creo que lo ideal hubiera sido que manejaras dos tablas de catálogo (productos y categorías) y una tabla Productos-Categorías de tal manera que tus datos fueran más o menos así:
Código:
PRODUCTOS:
IDProducto|Producto
---------------------------------
1|producto 1
2|producto 2
3|producto 3
CATEGORIAS:
IDCategoria|Descripcion
----------------------------------
1|Cate_1
2|Cate_2
3|Cate_3
PRODUCTOS_CATEGORIAS
idProdCat|idProducto|idCatetgoria|Orden
------------------------------------------------------
1|1|1|3
2|2|1|1
3|3|1|2
4|2|2|1
5|3|3|1
Si tienes oportunidad de cambiar tu modelo de datos te recomiendo que lo hagas, te evitarás muchos problemas en el futuro.
Saludos
Leo.