Autor Zpráva
Petr Ká
Profil
Ahoj,

potřeboval bych poradit jak

A) řazení produktů zvlášt pro kategorii a daného uživatele
B) řazení kategorií zvlášt pro uzivatele

Tabulka kategorií - categories (zjednodušeně):
category_id, name, user_id

Tabulka produktů - products (zjednodušeně):
product_id, category_id, user_id, name


Jde mi o posouvání záznamů nahoru a dolů, prepocitani radiciho sloupce poradi pri vytvoreni/smazani produktu/kategorie

Nasel jsem spousty reseni, nicmene pořád v tom tápám
nemeja
Profil
udělal bych to jednoduše
a) SELECT * FROM products WHERE user_id=iduzivatele AND product_id=idproduktu ORDER BY product_id ASC
b) SELECT * FROM categories WHERE user_id=iduzivatele ORDER BY category_id ASC
Petr Ká
Profil
nemeja:
Nemyslím výpis, ale řazení/změna pořadí atp.
Tori
Profil
Aby každý uživatel mohl mít jiné pořadí kategorií a produktů?
Asi další tabulka: id_kategorie, id_uživatele, pořadí. A primární klíč buď přes první dva, nebo přes všechny tři sloupce, teď nevím. Totéž pro produkty.
Kajman
Profil
Petr Ká:
posouvání záznamů nahoru a dolů

UPDATE `products` p1
       JOIN `products` p2
         ON p2.poradi = p1.poradi - 1 # + pro smer dolu
            AND p2.user_id = p1.user_id
            AND p2.category_id = p1.category_id
SET    p1.poradi = p2.poradi,
       p2.poradi = p1.poradi
WHERE  p1.user_id = 42
       AND p1.category_id = 8
       AND p1.product_id = 3

prepocitani radiciho sloupce

SET @radek=0;
UPDATE `products`
SET    poradi = @radek := @radek + 1
WHERE  user_id = 42
       AND category_id = 8
ORDER BY poradi,
         product_id  

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: