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
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
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
Díky moc za rady.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0