Autor Zpráva
m.e
Profil *
Zdravim

mam dve tabulky zviratka a hracky. kazde zviratko ma vice hracek.

zviratko
ID | jmeno_zviratka

hracka
ID_ZVIRATKA | jmeno_hracky

jak vybrat jednim dotazem konkretni zviratko a vsechny jeho hracky. jde to nejak lepe nez s GROUP CONCAT ?
Taps
Profil
m.e:
select * from zviratko z left join hracka h on z.ID=h.ID_ZVIRATKA
m.e
Profil *
Taps:
ale jak potom nejak hezky z vysledku vypises stranku o zviratku? tak aby na ni byly informace o zviratku a seznam jeho hracek?
123456789
Profil *
Nevím jak Vám, ale mě zápis:

zviratko1 | hracka1
zviratko1 | hracka2
zviratko1 | hracka3
..
..
..

přijde dostatečně hezký. A pokud ne, tak je to stejně až záležitost aplikace (to dostat do nějaké "čitejnější" podoby).
ninja
Profil
m.e: Může nastat situace, že stejnou hračku bude mít více zvířátek? Pokud ano, máte vazbu M:N a potřebujete si udělat vazební tabulku:
id_zviratka | id_hracky
m.e
Profil *
123456789:
jiste ale kdyz budes chtit udelat vypis na strance o zviratku tak mas to idelas jak? predstav si ze v tabulce o zviratku bude padesat parametru a ty je nactes trikrat. zaprve zvytecne zasiras pamet, a za druhe z tabulky co jsi uvedl budu ten vypis delat oklikou - zacnu prochazet pole (v tvem priklade o tech prvcich) budu testovat jestli je to prvni prvek a kdyz jo informace o zviratku a jinak u dalsich jen hracku.


ninja:
jj to mas pravdu umyslne jsem to ztahl na dve tabulky aby to jako priklad bylo mensi. takze v ramci prikladu dejme tomu ze kazde zviratko ma jen sve hracky.
ninja
Profil
m.e: Nic jiného nevymyslíte. Buď budete mít na každém řádku informaci jak o zvířátku, tak hračce, nebo potřebujete 2 dotazy - na zvířátko a následně na jeho hračky (nebo obráceně).

Pokud máte u hraček desítky sloupců, volil bych 2 dotazy. V přehledu zvířatek bych použil jeden dotaz, tam pravděpodobně nepotřebujete mít všechny data o hračkách, ale pouze jejich agragovaný souhrn pro každé zvířátko.
m.e
Profil *
ninja:
ok diky. asi naivne jsem cekal ze existuje nejake lepsi reseni.

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