Autor | Zpráva | ||
---|---|---|---|
David1256 Profil |
Dobrý den,
přemýšlím, jak vyřešit jeden problém. Dělám si takovou aplikaci, která bude sloužit k ohodnocování písniček. Aplikace funguje tak, že každý uživatel může vložit písničku, kterou budou ohodnocovat ostatní a může také hodnotit písničky, které vloží k ohodnocení ostatní uživatelé. Mám následující tabulky. TABULKA uzivatele id | nick | heslo TABULKA pisnicky id | interpret | skladba | youtubeLink | id_zadavatele | plus | minus (plus a minus jsou počty, kolika lidem se písnička líbí a kolika nelíbí) TABULKA hodnoceni id | id_hodnotitele | id_pisnicky Nyní však potřebuji sestrojit nějaký MySQL dotaz, který by mi zobrazil mnou (nebo jiným uživatelem) již ohodnocené písničky. To znamená vybrat všechny záznamy z tabulky "pisnicky", jejichž id je zároveň v tabulce hodnoceni ve sloupci id_pisnicky a toto id se také shoduje s id_hodnotile aktuálně přihlášeného, id bráno ze SESSION. Snad jsem to dobře vysvětlil. Děkuji za všechny rady. |
||
Sir Tom Profil |
David1256:
Také dobrý den, v podstatě jsi již slovně napsal, co je třeba udělat. Použij JOINování tabulek. Spoj tabulku pisnicky a hodnoceni. Dotaz může vypadat takto: SELECT p.* FROM pisnicky p JOIN hodnoceni h ON p.id = h.id_pisnicky WHERE h.id_hodnotitele = proste_nejake_cislo V tabulce hodnocení je zbytečný sloupec id. Definuj složený primární klíč nad id_hodnotitele a id_pisnicky. Tímto zamezíš, aby se v tabulce hodnoceni objevila stejná kombinace hodnot. |
||
David1256 Profil |
#3 · Zasláno: 6. 9. 2013, 11:40:28
Díky za odpověď. Zatím jsem se v MySQL s JOIN nepotkal, ale koukám, že to bude dobrý pomocník. Jen nějak moc nemůžu dostat pod kůži tu syntaxi. Proč tam je select p.* vždyť co je p?
|
||
Sir Tom Profil |
#4 · Zasláno: 6. 9. 2013, 12:01:42 · Upravil/a: Sir Tom
David1256:
p je zkrácený název jiné tabulku (alias). podívej se na řádek FROM pisnicky p - to se překládá jako - z tabulky pisnicky, kterou (v tomto dotaze) pojmenuj jako p.
p je tedy totéž jako pisnicky. Kód uvedený výše by šel tedy i napsat: SELECT pisnicky.* FROM pisnicky JOIN hodnoceni ON pisnicky.id = hodnoceni.id_pisnicky WHERE hodnoceni.id_hodnotitele = proste_nejake_cislo Hodně dobrý návod na syntaxi je http://www.linuxsoft.cz/article_list.php?id_kategory=232 |
||
David1256 Profil |
#5 · Zasláno: 6. 9. 2013, 12:48:59
Díky moc za rady.
|
||
Časová prodleva: 11 let
|
0