webForumDet fria alternativet

LEFT JOIN

2 svar · 175 visningar · startad av niels

nielsMedlem sedan juli 2000215 inlägg
#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

@ndersMedlem sedan juni 200026 914 inlägg
#2

Använd OUTER JOIN.

LarsGMedlem sedan dec. 200012 465 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.

Genererad på 386 ms · cache AV · v20260730165559-full.f96bc7eb