Autor Zpráva
omnikor
Profil *
Mam tabulky

Products (obsahuje Id, ...)
ProductCategories (obsahuje Id, ProductId, CategoryId, ...)
Categories (obsahuje Id, ...)

Produkt moze byt ulozeny do viacerych kategorii naraz.

- Products.Id ma relaciu na ProductCategories.ProductId
- Categories.Id ma relaciu na ProductCategories.CategoryId

Ked urobim join tak mi (spravne) vrati pre kazdy produkt tolko riadkov do kolkych kategorii bol ulozeny. To su ale zbytocne datove prenosy. Potreboval by som urobit taky join (alebo subselect) aby mi vratilo Produkt a vsetky jeho Categories.Id hodilo do jedneho stlpca bud aby tie Id-cka concatlo ako string napriklad: "1,2,3" alebo ako nejaky array (alebo take nieco).

Pouzivam SQL Server 2014 ale kludne dajte priklad aj na MySQL / MariaDB - ide mi o princip.
juriad_
Profil *
omnikor:
Toto v SQL nelze udelat. Ale kazda databaze ma sve rozsireni, ktere to umoznuje. Hledej GROUP_CONCAT.

Mimochodem, neni to spravne reseni.
http://php.vrana.cz/srovnani-dotazu-do-zavislych-tabulek.php
omnikor
Profil *
juriad:
Nakoniec som to vyriesil tak ze som si data id kategorii nacachoval do jedneho stlpca typu varchar(max). Kategorie si nacitavam jednym dotazom len pri starte aplikacie do pamate (takze nemusim robit select pri kazdom requeste). Mam ich naindexovane v hash tabulke takze a podla idecka si z nej vyberiem prislusnu kategotiu takto sa vyhnem zbytocnym jojinom

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:

0