Autor Zpráva
Cup
Profil
Moje vědomosti jsou vyčerpány. A to co bych chtěl jedním dotazem jsem s něma nedal. Poprosil bych Vás jestli by jste mi poradili pokud budete vědět.

Jde galerii ... každá galerie má fotky (nebo nemá) a administrátor si může vybrat fotku která se zobrazí jako náhledová fotka při výpisu galerií z db. Ale pokud ji nevybere tak aby se zobrazila jakákoli jiná.

tab fotka(idFotka, IdFotogalerie, ..... nahledovaFotka)
tab fotogalerie(idFotogalerie, nazevFotogalerie )

sloupec náhledováFotka nabírá hodnoty 1|0 a chtěl bych vypsat fotogalerie, a já chci aby mi to vybíralo počet fotek v galerii a údaje o fotce která má nastaveno nahledovaFotka na 1 (kdyz nema tak jakoukoli jinou) ... ve SQL umim jen to co sem kde okoukal ... dal jsem dokupy toto a to mi vybírá to co chci ... ale nevybere to tu fotku která má 'nahledovaFotka' na 1 ... zkoušel jsem to řadit sestupně ... pak jsem dal max ... ale to je blbost ... sem si neuvedomil ...

Pokud někdo ví tak prosím poraďte

SELECT count(f.idFotka) as countFotka, MAX(f.nahledovaFotka), f.idFotka, f.popisFotka, f.nazevFotka, f.idFotogalerie, fg.nazevFotogalerie
                            FROM fotka f, fotogalerie fg 
                            WHERE f.idFotogalerie = fg.idFotogalerie AND f.idTrida = '".$_SESSION["idTrida"]."' 
                            group by f.idFotogalerie  
                            order by fg.idFotogalerie DESC


potřebuju tam někam do podmínky dát to aby mi to vytáhlo fotku s nahledovaFotka = 1 nebo jakoukoli jinou pokud nebude


Moderátor Joker: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Moderátor Joker: Sloučil jsem dva příspěvky do jednoho
SwimX
Profil
Cup:
k čemu je dobré vybírat MAX(nahlekdovaFotka)?
dále bych zrušil GROUP BY je to poměrně větší náročnost na databázový servr, a ani zde nevidím důvod mít ho tu. když zrušíš i výběr count(idFotka) a počet fotek si následně zjistíš přesmysql_num_rows($result); teď jsem si uvědomil, proč to vlastně děláš.

a nestačilo by k řešení tvého problému změnit jen ORDER?
ORDER BY f.nahledovaFotka = 1 ASC, f.idFotogalerie DESC


mělo by to vrátit první záznam ten, kde je náhledová 1, zbytek seřadit podle idFotogalerie.
Kajman_
Profil *
Možná nějak takto...
select n.countFotka,
       fo.nahledovaFotka,
       fo.idFotka,
       fo.popisFotka,
       fo.nazevFotka,
       fo.idFotogalerie,
       fg.nazevFotogalerie
from   (select f.idFotogalerie,
               count(f.idFotka) as countFotka,
               ifnull(min(fn.idFotka), min(fn.idFotka)) idNahledu
        from   fotka f
        left   join fotka fn
        on     f.idFotka = fn.idFotka
               and fn.nahledovaFotka = 1
        where  f.idTrida = '".$_SESSION["idTrida"]."'
        group  by f.idFotogalerie) n
join   fotky fo
on     n.idNahledu = fo.idFotka
join   fotogalerie fg
on     n.idFotogalerie = fg.idFotogalerie
Cup
Profil
SwimX:
to jsem také zkoušel. ale nešlo mi to ... Sakra Mistr _Kajman opět nezklamal. Jdu to zkusit Děkuji moc

tak jsem to zkusil a galerie bez nahledovaFotka = 1, tedy s nahledovaFotka = 0 se nevybírají .... skusím to nějak poladit sám ale nepředpokládám že to zvládnu :)
Kajman_
Profil *
Jo na řádku 10 je překlep, mělo být
 ifnull(min(fn.idFotka), min(f.idFotka)) idNahledu
Cup
Profil
Kajman:
Luxus, díky moc.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0