A pesar de lo que parece, la consulta que necesitas no es una consulta simple. Hay varias formas de hacerlo, pero esta sería una:
Código MySQL:
Ver originalSELECT p.id
, c.cid
, c.categoria
, p.producto
p.id, c.cid,
c.categoria,
p.producto,
IF(@prod
<> p.id
, @cat
:=@cat
+1, @cat
) cat
, @prod:= p.id
No estoy seguro de su resultado exacto, porque es posible que necesite de un nivel de ordenamiento más, pero la idea andaría.
Todo otro camino que yo veo requiere de iteraciones y usar stored procedures.