Autor Zpráva
Rafan
Profil
Dobrý den,

vytvořil jsem si tabulku tht_videa a tht_kategorie a potřeboval bych tyto 2 tabulky spojit aby se mi na webu např. když dám kategorii "zábavná" zobrazovaly pouze videa, které jsou v kategorii "zábavná".

Vytvořil jsem si toto akorát nevím jestly to má s tím co chci alespoň něco společného.

$result = mysql_query("SELECT id_kategorie, titlulek FROM tht_videa LEFT JOIN tht_kategorie on zábavná = id_kategorie");


Předem děkuji za pomoc.
pcmanik
Profil
Rafan:
Keby si to vyskusal? Snad to nebudeme robit za teba.
Rafan
Profil
No právě že to nefunguje.
Keeehi
Profil
Rafan:
Dodej strukturu tabulek a vazby mezi nimi (který sloupec v jedné tabulce je shodný se sloupcem v druhé tabulce). Pak se můžeme o něčem bavit.
Rafan
Profil
Mám tabulku - tht_kategorie - id_kategorie, zábavná atd.. a pak tht_videa - id_kategorie, titulek, popis...
Keeehi
Profil
Pořád to nemohu pochopit. Asi budete mít špatně navrženou tabulku, takže vám uvedu příklad, jak by to mohlo vypadat.

tht_videa
id_video | titulek | popis
--------------------------
1        | Pes     | Pes co dělá neuvěřitelné kusy.
2        | Nehoda  | Velká automobilová nehoda na americké dálnici.
3        | Blondyna| Opravdu neschopná blondýna.

tht_kategorie
-------------
kategorie | id_video
zábava    | 1
zábava    | 3
auta      | 2
bouračky  | 2

Dotaz pro vybrání videí z kategorie zábava by vypadal takto:
SELECT tht_videa.id_video, tht_videa.titule, tht_videa.popis
FROM tht_kategorie INNER JOIN tht_videa
ON tht_kategorie.id_video = tht_videa.id_video
WHERE tht_kategorie.kategorie = "zábava";
Rafan
Profil
Dobrý den,

teď jsem to v rychlosti dodělal podle vašeho návodu a vypadá to že to funguje. Mockrát děkuji. Kdyby něco ještě sem napíšu.
Rafan
Profil
Dobrý den,

Mám ještě dotaz t videa můžou být ve více kategorích bude to fungovat? Díky.

EDIT: Ještě jsem si všiml že se mi vypisuje pouze řádek co má id_videa - 1 akorát já tam těch videí budu potřebovat více než jen 1. Nevíte v čem může být chyba?. Díky.
Kajman_
Profil *
Rafan:
Mám ještě dotaz t videa můžou být ve více kategorích bude to fungovat?

Ano.

Nevíte v čem může být chyba?
Nevíme. Možná jen nemáte i jiná videa přiřazena přes tabulku tht_kategorie do hledané kategorie, ale můžete mít chybu i jinde.
Rafan
Profil
Jo takhle, takže když vkládám ňáký to video tak musim vložit řádek zase s tou kategorií?
Kajman_
Profil *
Tolik řádků, do kolika kategorií patří.
Rafan
Profil
Takže pokud budu mít 10 videí (zábavných) tak v tht_kategorie bude 10x řádek zábavná?
Keeehi
Profil
Rafan:
Ano. V každém řádku bude id toho videa.
Rafan
Profil
OK, ale když ty videa vkládám přes administraci můžu nějak zaručit že to video s tou kategorií kterou jsem pro něj vybral bude mít stejné id_video?
Kajman_
Profil *
Po vložení zjistíte, jaké id video dostalo a to použijete pro uložení kategorií.
mysql_insert_id()
Rafan
Profil
takže to budu muset pak v databázi ručně nastavovat id? Pokud teda nedostane kategorie a video stejné.
Keeehi
Profil
Rafan:
Nejdříve script vloží video do db. Pak si pomocí mysql_insert_id() zjistí id toho videa a použije ho v insertu do tabulky kategorií.
Kajman_
Profil *
Musíte znát primární klíče kategoríí, do kterých se má video vložit.
Vložíte video, hned poté zjistíte nově získaný primární klíč videa.
A do vazební tabulky přidáte tolik dvojic (řádků), kolik je těch primárních klíčů kategorií.

Přečtěte si např. http://www.kosek.cz/clanky/iweb/12.html - hlavně vztah M:N, o který se snažíte. Nebo si rovnou zajděte do knihkupectví a investujte do nějaké knihy o relačních databázích, pokud to s nimi myslíte vážně.
Rafan
Profil
OK díky moc. O knize jsem taky přemýšlel nemáte nějaké doporučení na knihu? Díky.

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: