[MySQL] Rij 'omdraaien'

Pagina: 1
Acties:

  • GhandiHarder
  • Registratie: Februari 2003
  • Laatst online: 13-05 21:14
Beste mensen,

Ik zit met een raar probleem. Met een sql query haal ik een rij gegevens uit de db, gesorteerd op datum. Hij mag maar 12 datums weergeven, ivm met de layout. Maar nu moet de eerstvolgende datum, dus degene die nog het 'kortst duurt' Als eerste worden weergegeven. Geen probleem zou je zeggen, gewoon ASC of DESC. Maar nu is het probleem dat die datum ONDERAAN in een tabel moet beginnen, en de daaropvolgende 11 daarboven plaats.

Dus stel ik hem 15 datums, dan moeten er 12 datums worden weergegeven:

12e
|^
|^
|^
|^
|^
1e

  • simon
  • Registratie: Maart 2002
  • Laatst online: 13-05 17:26
LIMIT, ORDER by? Ik snap je probleem niet...
ORDER BY datum ASC limit 0,12

[ Voor 27% gewijzigd door simon op 23-02-2005 22:00 ]

|>


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 13-05 20:39
Daar kun je toch gewoon LIMIT voor gebruiken om een maximaal aantal records uit de database te halen? Kijk eens in de MySQL manual op mysql.org, daar staat precies beschreven hoe je met LIMIT moet omgaan.

edit:
hm ik ben traag

[ Voor 41% gewijzigd door Sybr_E-N op 23-02-2005 22:02 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Ik snap niet echt veel van je probleem, maar als je nou eerst het spul ophaalt dat je hebben wil, in de volgorde 1-12, en je daarna de functie array_reverse gebruikt, dan ben je er ook. Misschien dat als je alles wat duidelijker uitlegt, iemand ook een pure SQL-oplossing weet.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • GhandiHarder
  • Registratie: Februari 2003
  • Laatst online: 13-05 21:14
Ok, ik zal het wat duidelijker proberen: met datums:

(even als voorbeeld, ik wil 3 datums hebben uit een lijst van 5)

datums:

24 feb
25 feb
26 feb
27 feb
28 feb

1e poging:
In woorden: select 3 datums vanaf 23 feb, oplopend
resultaat:

24 feb
25 feb
26 feb

2e poging:
In woorden: select 3 datums vanaf 23 feb, aflopend
resultaat:

28 feb
27 feb
26 feb


En ik wil juist hebben:

26 feb
25 feb
24 feb


Iets duidelijker?

edit: de 1e poging moet dus 'dom' worden omgedraaid

[ Voor 6% gewijzigd door GhandiHarder op 23-02-2005 22:07 ]


  • simon
  • Registratie: Maart 2002
  • Laatst online: 13-05 17:26
Je wilt dus de laatste rij hebben, dus de selectie maken van de laatste, en die outputten van laag naar hoog.

Je selecteert dus de oudste, en die draai je om met array_reverse, zoals -NMe- mooi wist te vertellen

|>


  • Koeniepoenie
  • Registratie: Oktober 2003
  • Laatst online: 13-05 15:24
Je kunt het met array_reverse doen, maar je kunt ook een lege variabele steeds vullen, maar dan de data steeds aan het begin aanvullen (beetje kromme zin..)

vb. (in PHP)
PHP:
1
2
3
4
5
6
7
$query = mysql_query('...');

$data = '';
while($record = mysql_fetch_assoc($query)) {
    $data = $record['blaat'] . $data;
}
echo $data;

Parse error: syntax error, unexpected GOT_USER in https://gathering.tweakers.net on line 1337


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Koeniepoenie schreef op woensdag 23 februari 2005 @ 22:15:
Je kunt het met array_reverse doen, maar je kunt ook een lege variabele steeds vullen, maar dan de data steeds aan het begin aanvullen (beetje kromme zin..)
Ik heb het vermoeden dat array_reverse niet veel anders doet dan dat, maar dan in één regeltje. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • simon
  • Registratie: Maart 2002
  • Laatst online: 13-05 17:26
Als je helemaal josti bent kun je de array ook nog eens tellen en een nieuwe array aanmaken, maar die dan aftellend nummeren en die laten 'lopen'..

|>


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Je kan ook helemaal geen nieuwe array maken en ook niets reversen als je gebruik maakt van de interne array-pointer. (De end() en prev() functies zijn hier handig. :P)
PHP:
1
2
3
4
5
6
// je spul in een array ($arr) zetten
end($arr);
echo current($arr);
while (prev($arr) !== false) {
  echo current($arr);
}

Keuze zat. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • klokop
  • Registratie: Juli 2001
  • Laatst online: 30-03 19:56

klokop

swiekie swoeng

Zag net dit [dev.mysql.com], kan 't zijn dat dat werkt? Niet getest.

Dus:
code:
1
(select kolom from tabel order by kolom asc limit 5) order by kolom desc


(let op de haakies)

"Passing silhouettes of strange illuminated mannequins"

Pagina: 1