webForumDet fria alternativet

Alla poster från tabell, kompletteras om möjligt

Databaser & SQL

4 svar · 223 visningar · startad av Peeer

Medlem sedan mars 20025 907 inlägg
Frågan#1
select t_user.f_namn, t_user.f_efternamn, t_user.f_userid, t_points.f_time 
from t_user, t_points 
where t_points.f_compid = 2 and t_user.f_userid = t_points.f_userid
group by t_user.f_userid
order by t_user.f_efternamn asc

Använder ovanstående sats för att plocka ut alla tävlande och deras tid från en tävling. Men jag vill även få ut de personer som finns med i t_user, men som inte deltog i aktuell tävling (dvs inte finns med det compid't i t_points). De ska få tiden null. Går det att fixa med en fråga, eller måste jag köra på två separata frågor?

Medlem sedan juni 200032 967 inlägg
#2

Ja, du får göra en left outer join mot tabellen t_user istället, då blir resultatet som önskat.

Mvh,

Medlem sedan mars 20025 907 inlägg
#3

Finns det någonstans man kan läsa om alla de här väldigt användbara (men krångliga) sql-kommandona? Känner att jag inte har en aning om vad left outer join innebär, men skulle gärna vilja kunna det. :r

DBMS: mySQL

Medlem sedan dec. 200012 464 inlägg
Medlem sedan mars 20025 907 inlägg
#5

Helt underbart!
Följande kod kom jag fram till efter att ha läst igenom det inlägget (och sparat som favorit).

select t_user.f_namn, t_user.f_efternamn, t_user.f_userid, f_time
from t_user left outer join t_points on t_user.f_userid = t_points.f_userid and f_compid = 2
order by t_user.f_efternamn asc

Stort tack till er båda!

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)