Autor | Zpráva | ||
---|---|---|---|
omnikor Profil * |
#1 · Zasláno: 20. 12. 2014, 12:34:25
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 * |
#2 · Zasláno: 20. 12. 2014, 14:19:25
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 * |
#3 · Zasláno: 20. 12. 2014, 19:31:12
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 |
||
Časová prodleva: 9 let
|
0