Autor Zpráva
HGD
Profil
Potřebuji z jedné tabulky dostat NAME a ROK a z druhé RATING, přičemž movie_id v druhé tabulce je totožné s id v první tabulce.
Dotaz sem sepsal, ale vyhazuje mi to nějak uplně něco jinýho...
$tab=mysql_query("SELECT name,rok,rec.rating AS rat
                   FROM movie_db mov
                   JOIN rewiev rec
                   ON mov.id=rec.movie_id
                   WHERE mov.added='$_SESSION[UserId]'");
TomášK
Profil
Chybu tam nevidím. Máš příklad dat, které ti to vyhazuje a které nechceš, aby to vracelo nebo naopak které ve výsledku chybí?
HGD
Profil
tabulka movie:
id name name_orig rok direct length country genre descript cas added rating
1 Madagascar Madagascar 2005 96 USA animovaný 1 2009-06-08 16:58:56 1 40
2 Anakonda Anakonda 0 0 akční 2 2009-06-08 18:24:42 1 0
3 Hellboy Hellboy 0 0 USA akční 3 2009-06-08 19:54:22 2 0


tabulka rewiev:
id user_id movie_id text rating
1 1 1 4 4
2 2 1 2 2


Mělo by mi to vrátit výsledky jed podle added="1" ale vrací 2x "MAdagascar" protože sou tam o něm 2 záznamy
bohyn
Profil
HGD
SELECT name,rok, rec.rating AS rat
FROM movie_db mov
JOIN rewiev rec ON mov.id=rec.movie_id AND mov.added='$_SESSION[UserId]'
TomášK
Profil
To souhlasí s mou představou toho, co ten dotaz dělá - z jedné tabulky vezme film a propojí ho s ratingy v druhé tabulce - protože tam má Madagascar dva ratingy, vrátí do dvakrát Madagascar. Ze zadání jsem pochopil, že právě o tohle usiluješ, ale zřejmě ne. Jaký výsledek bys čekal od toho dotazu na uvedených datech? V tvém popisu je zřejmě někde překlep - nepodařilo se mi ho rozlousknout - "Mělo by mi to vrátit výsledky jed podle added="1" "

bohyn
pokud se nepletu, tvůj dotaz dělá přesně totéž jako ten původní - jde o jinou syntax téhož
Kajman_
Profil *
Pokud se má z ratingů dělat průměr a zobrazit jen jím přidané filmy, tak např.

SELECT mov.id,
       mov.name,
       mov.rok,
       ifnull(avg(rec.rating), 'nehodnoceno') AS rat
FROM   movie_db mov
LEFT   JOIN rewiev rec ON mov.id = rec.movie_id
WHERE  mov.added = '$_SESSION[UserId]'
GROUP  BY mov.id, mov.name, mov.rok


Pokud to má uživateli ukázat jeho hodnocení u všech filmů

SELECT mov.id,
       mov.name,
       mov.rok,
       ifnull(rec.rating, 'nehodnoceno') AS rat
FROM   movie_db mov
LEFT   JOIN rewiev rec ON mov.id = rec.movie_id AND rec.user_id = '$_SESSION[UserId]'


Ale opravdu těžko radit, když se neví, po čem vlastně HGD touží.
HGD
Profil
z dotazu jsem chtěl dostat hodnocení u všech filmů jak psal Kajman_, ale ještě jen u těch, které byly přidány určitým uživatelem.
Díky Kajman_ :) postrčil jsi mě správným směrem :)
SELECT name,rok,rec.rating AS rat
                   FROM movie_db mov
                   LEFT JOIN rewiev rec
                   ON mov.id=rec.movie_id AND rec.user_id='$_SESSION[UserId]'
                   WHERE mov.added='$_SESSION[UserId]'

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: