Autor Zpráva
Fury
Profil *
Zdravím,

mám následující dotaz:
    
select
g.*, f.fotka, f.popis
from galerie g
left join galerie_fotky f on f.galerie_id = g.id and f.hlavni = 1
where g.zobrazit = 1
order by poradi asc

Tímto zobrazím na webu výpis všech galerií, společně s jejich hlavní fotkou. Potřeboval bych však, abych mohl zobrazovat i počet fotek. Dotaz jsem sice schopný upravit takto:

select
 g.*, f.fotka, f.popis, count(f.galerie_id) pocet_fotek
from galerie g
 left join galerie_fotky f on f.galerie_id = g.id 
where g.zobrazit = 1
group by f.galerie_id
order by poradi asc

Ale zde musím zrušit tu podmínku " and f.hlavni = 1", kterou však potřebuji. Dá se toto upravit do jednoho dotazu?

Díky moc
Kajman
Profil
Variant je víc, asi bych použil tu první
SELECT g.*,
       f.fotka,
       f.popis,
       (SELECT Count(*)
        FROM   galerie_fotky gf
        WHERE  gf.galerie_id = g.id) pocet_fotek
FROM   galerie g
       LEFT JOIN galerie_fotky f
              ON f.galerie_id = g.id
                 AND f.hlavni = 1
WHERE  g.zobrazit = 1
ORDER  BY poradi ASC

SELECT g.*,
       f.fotka,
       f.popis,
       Coalesce(p.pocet, 0) pocet_fotek
FROM   galerie g
       LEFT JOIN galerie_fotky f
              ON f.galerie_id = g.id
                 AND f.hlavni = 1
       LEFT JOIN (SELECT gf.galerie_id id,
                         Count(*)      pocet
                  FROM   galerie_fotky gf
                  GROUP  BY gf.galerie_id) p
              ON p.id = g.id
WHERE  g.zobrazit = 1
ORDER  BY poradi ASC

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0