Zdravím,
mám tu problém se složením SQL dotazu. Mám tři tabulky -
server (server_id, name),
offer (offer_id, date, ...)
offer_server (offer_server_id, server_id, offer_id). - vazebni tabulka
Co potřebuji, je počet nabídek (offer) pro každý jednotlivý server, tedy i pro ty které nabídku nemají (není pro daný server záznam v server_offer). Toho jsem schopen docílit dotazem
SELECT count(sr.server_id) as count_server,s.name
FROM server s LEFT JOIN offer_server sr
ON s.server_id = sr.server_id GROUP BY s.server_id
Problém je ten, že v aplikaci mám filtr na datum, který když aplikuji, tak mi dotaz vrátí jen servery s nabídkou, já potřebuji aby to vrátilo všechny a u těchco nemají nabídku bude count_server = 0.
Dotaz s filtrem nyní vypadá takto:
SELECT count(sr.server_id) as count_server,s.name FROM server s LEFT JOIN offer_server sr ON s.server_id = sr.server_id
WHERE (sr.offer_id IN (SELECT offer_id from offer where YEAR(date) = '$rok'))
GROUP BY s.server_id
Díky za odpovědi.