Autor Zpráva
deader
Profil
Zdravím, zajímalo by mě, jestli se dá udělat select, který by vytáhl na prvním místě položky s 'datum'<=dnes and 'datum'>=před týdnem a potom všechny položky ze samé tabulky řazené podle id? Aby prostě upřednostil ty aktuální. Doufám, že pochopíte, jak to myslím :) Pokud to nejde, nevadí, udělám to jako 2 dotazy a spojím phpkem.
xmark
Profil
Vzhledem k tomu, že bys pak pravděpodobně chtěl těch prvních x nějak odlišit, myslím že si to zbytečně komplikuješ. Cokoliv bys jedním dotazem ušetřil, bys ztratil psaním php omáčky kolem.
deader
Profil
Odlišit je nechci, jde o výpis aktualit, normálně se řadí podle id, ale teď po mě chtějí, aby při nastavení datumu aktuality v pravý čas "skočila" nahoru. Nemůžu nastavit řazení všech podle datumu, protože pak by nahoře trčely aktuality, které by měly datum třeba příští rok a aktuální by byly pod nimi.
tiso
Profil
deader: „protože pak by nahoře trčely aktuality, které by měly datum třeba příští rok a aktuální by byly pod nimi
Ale to práve podmienka „'datum'<=dnes and 'datum'>=před týdnem“ rieši, nie?
deader
Profil
jenže jak to spojit s výpisem všech položek?
tiso
Profil
deader: a prečo chceš vypísať všetky (s dátumom o rok)?
deader
Profil
no jak jsem se už zmiňoval, je to výpis všech článků řazených podle id(tedy podle přidání), potřebuji však aby ty, kterým se nastaví nějaké datum, se zobrazili v tom datu na prvním místě.
tiso
Profil
deader: takže ti stačí toto: where 'datum'<=dnes order by id desc
deader
Profil
nj, ale já potřebuji, aby se ten článek zobrazil i před svým datem. Akorát až bude to jeho datum, tak by se zobrazil na 1. místě.
tiso
Profil
deader: aha, tak toto na jeden dotaz nespravíš, iba ak by si použil union a v PHP vyhádzal tie, ktoré sú už zobrazené.
Kajman_
Profil *
order by (`datum` between '2010-10-31' and '2010-11-06') desc, `id`
tiso
Profil
Sakra, jak to ten Kajman_ robí, že ma takto dostane?
deader
Profil
Kajman: To je přesně ono, moc díky.
tiso:
S union mi to šlo taky, nezobrazí totiž duplicitní položky:
The UNION operator selects only distinct values by default. To allow duplicate values, use UNION ALL. > viz.http://www.w3schools.com/sql/sql_union.asp
To, že by je zobrazil 2x, by mě nevadilo, ale nepodařilo se mi seřadit ostatní položky. Tohle mi seřadilo položky i z prvního selectu, takže union ztratil význam:
SELECT * FROM `clanky` where datum='2010-10-25' union select * from clanky order by id desc

A i tobě díky za snahu :)

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