webForumDet fria alternativet
Logga in / Bli medlem

LEFT JOIN

Databaser & SQL

2 svar · 177 visningar · startad av niels

Medlem sedan juli 2000212 inlägg
Trådstart#1

Följande sql sats:

SELECT
clients_tab.name,
SUM(stats_tab.revenue_client) AS revenue
FROM
stats_tab,
domains_tab
LEFT JOIN clients_tab ON domains_tab.client_id = clients_tab.id
WHERE
stats_tab.domain_id = domains_tab.id AND
MONTH(stats_tab.date) = MONTH(CURDATE())
GROUP BY clients_tab.id

funkar fint förutom att när det inte finns ngn domain och stats för en client så vill jag att hans namn skall visas med noll i revenue. Hade för mig att man kunde lösa det med en LEFT JOIN så att alla clienter visas och om en client inte har ngn domän med stats så visas noll i revenue...

tacksam för svar!
/Niels Bosma

Medlem sedan juni 200032 967 inlägg
#2

Använd OUTER JOIN.

Medlem sedan dec. 200012 464 inlägg
#3

Om du vill ha alla poster från clients_tab så

SELECT
clients_tab.name,
SUM(coalesce(stats_tab.revenue_client,0)) AS revenue
FROM
stats_tab right join 
domains_tab on stats_tab.domain_id = domains_tab.id
right JOIN clients_tab ON domains_tab.client_id = clients_tab.id
WHERE 
MONTH(stats_tab.date) = MONTH(CURDATE())
GROUP BY clients_tab.name

Nyckelordet outer krävs inte.

379 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
125 ms — deklarationer (db)
121 ms — hämta statistik (db)
129 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)