| Autor | Správa |
Karo88
 Užívateľ
 Založený: 17.10.2008 Príspevky: 33
 | Zaslal: Ne 04.09.11 18:53 |   |
potrebujem zotriediť datumy a to tak že najskôr dá dátumy najbližšie čo bude potom čo už bolo skúšal som| kód: | | select * FROM spravy ORDER BY (dodate >= '$dnesnydatum') ASC, (dodate < '$dnesnydatum')DESC LIMIT ".$offset.", ".$storynum_k88_sutaze; |
v stlpci dodate je dátum kedy tá sprava bude aktuálna
rok-mesiac-den hodina:minuta:sekunda
a v dnesnydatum je date("Y-m-d H:i:s");
ide oto aby sa to pri listovaní zobrazoval dátum nabližší ktorý bude a potom dátumy najstaršie
uvediem príklad:
dnes je 2011-09-04 16:52
a chcem aby mi zotriedilo tieto tabulky nasledovne
2011-09-04 16:52
2011-09-09 15:00
2011-09-12 15:00
2011-11-14 17:00
2011-08-12 15:00
2011-08-05 16:00
2011-05-09 12:00
a potrebujem toto dostať v jednom selecte tieto výpisi |
| |
  |
 |
coldak
 Skúsený užívateľ
 Založený: 29.10.2008 Príspevky: 936
 | Zaslal: Po 05.09.11 21:25 |   |
|
  |
 |
Karo88
 Užívateľ
 Založený: 17.10.2008 Príspevky: 33
 | Zaslal: Po 05.09.11 22:04 |   |
no tak v sql sa moc nevyznám a poviem to narovinu som samouk tak rád by som videl ako to myslíš stým if lebo si to vôbec neviem predstaviť |
| |
  |
 |
camo
 Zablokovaný užívateľ
 Založený: 05.09.2009 Príspevky: 1176 Bydlisko: Lehota pod Vtáčnikom
 |
(select * from spravy where dodate >= $dnesnydatum order by dodate) union (select * from spravy where dodate < $dnesnydatum order by dodate desc limit $od, $do); |
| |
    |
 |
Karo88
 Užívateľ
 Založený: 17.10.2008 Príspevky: 33
 | Zaslal: Ut 06.09.11 15:23 |   |
prvé zoradenie mi ide ale netriedi podla order by dodate :/ |
| |
  |
 |
camo
 Zablokovaný užívateľ
 Založený: 05.09.2009 Príspevky: 1176 Bydlisko: Lehota pod Vtáčnikom
 | Zaslal: Ut 06.09.11 16:40 |   |
Neverím...
Vôbec netriedi, alebo triedi ale v zlom poradí(asc/desc).
Resp. aký dátový typ je ten dátumový stĺpec? |
| |
    |
 |
Karo88
 Užívateľ
 Založený: 17.10.2008 Príspevky: 33
 | Zaslal: Ut 06.09.11 16:43 |   |
vôbec netriedi ale ten druhý select triedi a datový typ je datetime |
| |
  |
 |
camo
 Zablokovaný užívateľ
 Založený: 05.09.2009 Príspevky: 1176 Bydlisko: Lehota pod Vtáčnikom
 | Zaslal: Ut 06.09.11 16:57 |   |
Chceš povedať, že ak to spustíš osobitne
select * from spravy where dodate >= $dnesnydatum order by dodate
, tak to netriedi? |
| |
    |
 |
Karo88
 Užívateľ
 Založený: 17.10.2008 Príspevky: 33
 | Zaslal: Ut 06.09.11 17:01 |   |
ked to nieje spojené uniom tak order y funguje ale ked to spojím tak mi tridi iba posledný select a ten horný pred spojením nie, som stoho už úplne jelen... |
| |
  |
 |
camo
 Zablokovaný užívateľ
 Založený: 05.09.2009 Príspevky: 1176 Bydlisko: Lehota pod Vtáčnikom
 | Zaslal: Ut 06.09.11 17:03 |   |
Skús tam pridať
select * from spravy where dodate >= $dnesnydatum order by dodate limit 100 |
| |
    |
 |
Karo88
 Užívateľ
 Založený: 17.10.2008 Príspevky: 33
 | Zaslal: Ut 06.09.11 17:08 |   |
paráda tak teraz to ide
(select * from spravy where dodate >= $dnesnydatum order by dodate limit 100) union (select * from spravy where dodate < $dnesnydatum order by dodate desc limit $od, $do);
tak teraz sa chcem spýtať keď som tam dal to 100 tak by malo zobraziť 100 záznamov a ja na stránku zobrazujem len 20 tak potom by to malo byť ako |
| |
  |
 |
camo
 Zablokovaný užívateľ
 Založený: 05.09.2009 Príspevky: 1176 Bydlisko: Lehota pod Vtáčnikom
 | Zaslal: Ut 06.09.11 17:18 |   |
Vlastne podĺa špecifikácie by to 100 malo byť ignorované, ale riešia to tam dosť krkolomne. Asi by si tam mal dať to, čo máš v tom druhom limite. |
| |
    |
 |
Karo88
 Užívateľ
 Založený: 17.10.2008 Príspevky: 33
 | Zaslal: Ut 06.09.11 17:23 |   |
už som to skúšal zobrazovalo 20 a 20 pre jeden aj druhý výpis a ja a potrebujem len raz 20,
po prechode na druhú stránku mi potom zase zobrazilo správy nové a aj neaktuálne pri tom už na hlavnej stránke bol prechod na neaktuálne tak je to také zavádzajúce |
| |
  |
 |
camo
 Zablokovaný užívateľ
 Založený: 05.09.2009 Príspevky: 1176 Bydlisko: Lehota pod Vtáčnikom
 | Zaslal: Ut 06.09.11 17:26 |   |
No tak skús dať ešte za poslednú zátvorku taký istý limit 20 |
| |
    |
 |
Karo88
 Užívateľ
 Založený: 17.10.2008 Príspevky: 33
 | Zaslal: Ut 06.09.11 17:34 |   |
tak ani to nepohlo ale zato toto funguje:
(select * from spravy where dodate >= $dnesnydatum order by dodate limit 100) union (select * from spravy where dodate < $dnesnydatum order by dodate desc limit 100) limit $od, $do;
tak toto riešenie funguje ďakujem za pomoc a hlavne za ochotu zase som o niečo múdrejší |
| |
  |
 |
|