Autor | Zpráva | ||
---|---|---|---|
icefireCZ Profil |
Dobrý den,
potřeboval bych pomoci ohledně spojování tabulek nebo dvou "buňek". Mám tabulku "pokemons" ve které mám zatím jenom z testovacích důvodů tohle: id INT AI pokemon_name VARCHAR(99) NULL pokemon_weight INT(9) NULL a potom vložím například hodnotu: INSERT INTO pokemons(id, pokemon_name, pokemon_weight) VALUES(NULL, "Charizard", 69) a potom mám tabulku "abilities" ve které mám: id INT AI ability_name VARCHAR(99) NULL pokemon_id INT(9) NULL No a problém je v tom, že existují pokémoni, kteří mají víc jak DVĚ ability (nebo jejich typ, nevím jak to jinak nazvat), a když do tabulky Abilities přidám hodnoty o jednom pokémonovi: INSERT INTO abilities(id, ability_name, pokemon_id) VALUES(NULL, "Fire", 1) INSERT INTO abilities(id, ability_name, pokemon_id) VALUES(NULL, "Water", 1) a vypíšu si je: SELECT * FROM pokemons JOIN abilities ON pokemons.id = abilities.id WHERE abilities.pokemon_id = 1 Tak bych chtěl aby se mi vypisovalo že ten daný pokémon MÁ tyto dvě ability (nebo má u těch abilit jeho ID), ale to mi nějak nejde. Vypisuje se mi jenom JEDNO, a když dám RIGHT JOIN, tak se mi vypisují všechny, ale potom ostatní hodnoty mají obsah NULL. DĚLÁM NĚCO ŠPATNĚ? :/ Jestli to má něco společného s těma "cizíma klíčema", tak bych poprosil o rekonstrukci této mini ukázky. Děkuji moc |
||
Radek9 Profil |
#2 · Zasláno: 9. 3. 2017, 18:30:51
icefireCZ:
Máš špatně spojovací podmínku: ON pokemons.id = abilities.pokemon_id „Jestli to má něco společného s těma "cizíma klíčema"“ Cizí klíče bys měl určitě používat. Konkrétně na ten sloupec pokemon_id . Vyhneš se nekonzistenci v DB.
|
||
icefireCZ Profil |
#3 · Zasláno: 9. 3. 2017, 18:34:49
Radek9:
Jééééžiš, taková chyba a já si ji nevšimnu .... bože Děkuji Co se týče těch klíčů, nechápu je, v tom je ten problém. Koukal jsem se na W3Schools, ale tam to mají moc zmatečné. |
||
Keeehi Profil |
#4 · Zasláno: 10. 3. 2017, 14:57:27
Já bych udělal tabulky asi 3. Z abilities bych odstranili pokemon_id a vytvořil novou tabulku, která by spojovala pokemon_id and ability_id. Tím nebude v tabulce abilities vícekrát voda kvůli všem vodním pokémonům.
|
||
Časová prodleva: 7 let
|
0