Autor Zpráva
kadla23
Profil
Dobrý den,

mám tři tabulky. Zanr Zanr_Autor a Autor. Ja bych potřeboval nalézt všechny autory, co obsahují buď všechny zadané knížky anebo část zadaných knížek, ale už neobsahuje už žádně další. Nejlepší bude, kryž uvedu příklad.

Zadám: horor, beletrie, komedie.

Spravny vysledek muze byt, autor co napsal: horor, beletrie, komedie anebo
horor, beletrie, ALE nesměl napsat už žádný jiný žánr.

Nesprávné by bylo: horor, beletrie, komedie, dektevika nebo horor, beletrie, detektivka.



Strašně děkuju moc.
Taps
Profil
kadla23:
napiš jakou máš strukturu databázových tabulek
kadla23
Profil
jasny,

tabulka zanr: idzanr (pk), nazev_zanru
tabulka zanr_autor: zanr_idzanr (fk), autor_idautor (fk)
tabulka autor: idautor (pk), nazev_autora


Diky
Taps
Profil
kadla23:
zkus toto:
$sql=mysql_query("select z.nazev_zanru as nazevzanru from zanr as z ,zanr_autor as za,
autor as a where a.idautor=za.autor_idautor and z.idzanr=za.zanr_idzanr and z.nazev_zanru in('horor','beletrie','komedie')");
kadla23
Profil
hele hází mi to pořad nějaký chyby. určitě jsem to je jen pojmenování názvů. třeba z.nazev mi nechce vzít
panther
Profil
kadla23:
hele hází mi to pořad nějaký chyby.
a jaké chyby to jsou, si máme domyslet? Hele, mám nějak rozbitý auto, nevíš, čím to může být?
Kajman_
Profil *
Možná to půjde takto nějak...
select a.idautor, a.nazev_autora, group_concat(distinct z.nazev_zanru) zanry
from   autor as a
join   zanr_autor as za
       on     a.idautor = za.autor_idautor
join   zanr as z
       on     z.idzanr = za.zanr_idzanr
left   join zanr as z2
       on     z.idzanr = z2.idzanr
              and z2.nazev_zanru('horor', 'beletrie', 'komedie')
group  by a.idautor, a.nazev_autora
having count(z2.idzanr) in (count(z.idzanr),3) -- 3 je pocet hledanych zanru
order  by count(z2.idzanr) desc, a.nazev_autora

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0