Autor | Zpráva | ||
---|---|---|---|
mackopu Profil |
#1 · Zasláno: 12. 11. 2012, 11:01:29
Mám tabulku otázek, odpovědí a uživatelů:
CREATE TABLE IF NOT EXISTS `otazky` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_uzivatele` int(11) NOT NULL, `nazev` varchar(255) NOT NULL, PRIMARY KEY (`id`) ); INSERT INTO `otazky` (`id`, `id_uzivatele`, `nazev`) VALUES (1, 1, 'Otázka 1'), (2, 2, 'Otázka 2'), (3, 1, 'Otázka 3'), (4, 2, 'Otázka 4'), (5, 1, 'Otázka 5'), (6, 2, 'Otázka 6'); CREATE TABLE IF NOT EXISTS `odpovedi` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_otazky` int(11) NOT NULL, `text` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ); INSERT INTO `odpovedi` (`id`, `id_otazky`, `text`) VALUES (1, 1, 'Odpověď 1'), (2, 1, 'Odpověď 2'), (3, 1, 'Odpověď 3'), (4, 1, 'Odpověď 4'), (5, 1, 'Odpověď 5'), (6, 2, 'Odpověď 6'), (7, 2, 'Odpověď 6'), (8, 3, 'Odpověď 6'), (9, 3, 'Odpověď 6'), (10, 3, 'Odpověď 6'), (11, 4, 'Odpověď 6'), (12, 4, 'Odpověď 6'); CREATE TABLE IF NOT EXISTS `uzivatele` ( `id` int(11) NOT NULL AUTO_INCREMENT, `jmeno` varchar(255) NOT NULL, PRIMARY KEY (`id`) ); INSERT INTO `uzivatele` (`id`, `jmeno`) VALUES (1, 'Uživatel 1'), (2, 'Uživatel 2'); Toto nefunguje: SELECT otazky.id AS idecko_otazky, otazky.id_uzivatele AS idecko_uzivatele, otazky.nazev AS nazev_otazky FROM otazky, odpovedi, uzivatele WHERE otazky.id_uzivatele = uzivatele.id AND ( (SELECT COUNT(odpovedi.id) FROM odpovedi, otazky WHERE odpovedi.id_otazky = otazky.id) >= 3 ) AND otazky.id_uzivatele = uzivatele.id AND otazky.id = odpovedi.id_otazky; |
||
Tori Profil |
„V čem je chyba?“
V poddotazu znovu připojujete tabulku otazky, ale bez vazby na vnější dotaz. Takže jestli tomu správně rozumím, pokud existuje nějaká (kterákoli) otázka s více než třemi odpověďmi, podmínka se vyhodnotí jako TRUE pro každý řádek z vnějšího dotazu. Pokud poddotaz upravíte na (SELECT COUNT(odpovedi.id) FROM odpovedi WHERE odpovedi.id_otazky = otazky.id) >= 3 ) SELECT q.id idecko_otazky, q.id_uzivatele idecko_uzivatele, u.jmeno jmeno_tazatele, q.nazev nazev_otazky, COUNT( a.id ) cnt FROM otazky q INNER JOIN odpovedi a ON a.id_otazky = q.id INNER JOIN uzivatele u ON q.id_uzivatele = u.id GROUP BY q.id HAVING cnt > 2 |
||
mackopu Profil |
#3 · Zasláno: 12. 11. 2012, 12:01:36
To je přesně ono, děkuji mnohokrát.
|
||
Časová prodleva: 12 let
|
0