Autor | Zpráva | ||
---|---|---|---|
David1256 Profil |
Dobrý den,
nedávno jsem tu zakládal téma, kde jsem se ptal, jak udělat dotaz na vybrání již ohodnocených písniček v mojí aplikaci k ohodnocování písniček Dotaz na dvě tabulky zároveň. Teď řeším opačný problém a sice jak udělat dotaz na ještě neohodnocené písničky. Přemýšlel jsem nad tím a prostě jsem to nevymyslel, zkoušel jsem to opět přes JOIN, ale nevymyslel jsem to. Také mě napadlo, jestli v MySQL neexistuje něco jako doplněk k druhému dotazu, ale nic takového jsem nenašel. Struktura DB a popis fungování aplikace je ve vláknu výše. Pokud byste mi s tím někdo poradil, byl bych moc rád. Děkuji. |
||
Kajman Profil |
Např.
SELECT p.* FROM pisnicky p LEFT JOIN hodnoceni h ON p.id = h.id_pisnicky WHERE h.id_hodnotitele = 42 AND h.id_pisnicky IS NULL |
||
David1256 Profil |
Díky moc, nemohl jsem přijít na to, jak vyjádřit "IS NULL", do této doby jsem se s touto konstrukcí nesetkal. Na výpis novinek a podobné základní věci, nebyla potřeba :-). Čím dál tím vidím, jak dokáže být SQL důmyslné. Nicméně ten dotaz nefungoval, ale navedl jsi mě na správnou cestu. Upravil jsem takto a funguje.
SELECT p.* FROM pisnicky p LEFT JOIN hodnoceni h ON p.id = h.id_pisnicky WHERE zadal!='$nick' AND h.id_pisnicky IS NULL |
||
Kajman Profil |
#4 · Zasláno: 7. 9. 2013, 21:18:54
David1256:
„zadal!='$nick'“ To je divná podmínka. Pokud hledáte písničky, které nehodnotil zvolený uživatel, má tam být rovníko. Pokud písničky, které nikdo nehodnotil, má tam být jen WHERE h.id_pisnicky IS NULL |
||
David1256 Profil |
Kajman:
Nevím no, myslím si, že to mám správně. Pokud bych tam nepřidal „zadal!='$nick'“, tak mi to zobrazí i písničky, které vložil přihlášený uživatel a nechci, aby šlo, aby si mohl uživatel hodnotit písničky, které sám přidal. Předpokládám, že tomu, kdo je tam přidal, se písnička líbí. Respektive tak je ta aplikace myšlena, že ten kdo písničku zadá do systému, tak se mu líbí. |
||
Kubo2 Profil |
#6 · Zasláno: 8. 9. 2013, 00:27:09
David1256:
„zadal!='$nick'“ Nie skôr WHERE NOT `zadal` = '$nick' ?
|
||
Kajman Profil |
#7 · Zasláno: 8. 9. 2013, 12:58:24
David1256:
Jo, v tom případě tam podmínka patří. |
||
David1256 Profil |
#8 · Zasláno: 9. 9. 2013, 12:29:46
Tak to mám přeci jenom ještě špatně. Nyní to funguje tak, že každá písnička jde ohodnotit pouze jedním uživatelem. Může za to
AND h.id_pisnicky IS NULL Jenomže já tam potřebuji dostat AND h.id_pisnicky IS NULL where h.id_hodnotitele=42 , což by zaručilo, že dotaz vypíše jenom ty písničky, které ještě nehodnotil přihlášený uživatel a né písničky, které nehodnotil ještě žádný uživatel. Jenom nevím, jak to do toho dotazu dostat. 2x where je asi blbost, ale jiná konstrukce mě nenapadá.
|
||
Kajman Profil |
#9 · Zasláno: 9. 9. 2013, 12:34:04
Pardon, ta podmínka na hodnotitele nemá být ve where, ale v tom left joinu
SELECT p.* FROM pisnicky p LEFT JOIN hodnoceni h ON p.id = h.id_pisnicky AND h.id_hodnotitele = 42 WHERE p.zadal!='$nick' AND h.id_pisnicky IS NULL |
||
David1256 Profil |
#10 · Zasláno: 9. 9. 2013, 13:02:47
Kajman:
Díky moc, funguje. |
||
Časová prodleva: 11 let
|
0