Autor | Zpráva | ||
---|---|---|---|
HGD Profil |
#1 · Zasláno: 8. 6. 2009, 20:13:17
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 |
#2 · Zasláno: 8. 6. 2009, 21:03:33
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 |
#3 · Zasláno: 8. 6. 2009, 23:28:56 · Upravil/a: HGD
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 |
#4 · Zasláno: 9. 6. 2009, 00:36:36 · Upravil/a: bohyn
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 |
#5 · Zasláno: 9. 6. 2009, 01:55:55 · Upravil/a: TomášK
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 * |
#6 · Zasláno: 9. 6. 2009, 08:19:41
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 |
#7 · Zasláno: 9. 6. 2009, 22:00:58
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]' |
||
Časová prodleva: 15 let
|
0