mysql sorteren op meerdere dingen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jorn

jorn

19/02/2006 18:24:00
Quote Anchor link
ik wil graag dat iets uit de db halen en dat vervolgens sortern op 5 dingen (allemaal cijfers) ik wil dat de rij met de hoogste getallen in totaal (dus die 5 bij elkaar opgeteld) bovenaan komt.

weet iemand hoe ik dat moet doen?

bvd,
bunkie
 
PHP hulp

PHP hulp

17/11/2024 11:35:00
 
Jan Koehoorn

Jan Koehoorn

19/02/2006 18:31:00
Quote Anchor link
SELECT (veld1 + veld2 + veld3 + veld4 + veld5) AS totaal
FROM tabel
ORDER BY totaal DESC
 
Jorn

jorn

19/02/2006 18:45:00
Quote Anchor link
maar ik wil meer selecteren dan die 5 velden

en nog een vraagje da hier bij hoort:
ik wil da hij bij sommige ACS sorteerd en bij andere DESC ik kan dat als variable in een link stoppen maar hoe kan ik dat het best doorvoeren in de mysql

ik d8t ik doe het zo:
// $order = waarop hij moet sorteren
// volgorde = DESC of ACS
SELECT * FROM Coureur ORDER BY '$order' '$volgorde'

maar dit werkt nie :(

weet iemand hoe dit wel kan?
 
Jan Koehoorn

Jan Koehoorn

19/02/2006 18:50:00
Quote Anchor link
Het is ASC en geen ACS.
 
Jorn

jorn

20/02/2006 08:02:00
Quote Anchor link
srry spelling foutke

had het wel goed in script staan :)

maar ik heb nog steeds geen oplossing :(
of zou deze manier gewoon moeten werken en doe ik gewoon iets fout :S?
 
Jan Koehoorn

Jan Koehoorn

20/02/2006 08:29:00
Quote Anchor link
Het is handiger als je precies vertelt welke waarden je uit je tabel wilt laten rollen en in welke volgorde je de waarden op wat voor manier wilt laten sorteren.
 
Jorn

jorn

20/02/2006 09:00:00
Quote Anchor link
ok hier wat percieser:
tabel coureurs
met de velden:
~naam(varchar)
~leeftijd(int)
~eigenschap1(int)
~eigenschap2(int)
~eigenschap3(int)
~eigenschap4(int)
~eigenschap5(int)
~waarde(int)
~salaris(int)
~vraagprijs(int)

dit zijn de velden van de tabel. nu wil da mensen de tabel kunnen sorteren op: naam, leeftijd, totaal eigenschappen(dus alle eigenschappen bij elkaar opgeteld) ,waarde,salaris,vraagprijs

dit is dus wat ik wil ik dacht dat te doen door via een link met $_GET aan te geven waarop hij moet sorteren dit werkte alleen kwam ik bij het probleem dat ik wil dat hij alle eigenschappen neemt om te sorteren en niet 1.
verder kwam ik bij het probleem dat sommige ASC moeten worden gesorteerd en andere DESC

ik hoop dat dit een betere beschrijving is van mijn probleem :)
 
Jan Koehoorn

Jan Koehoorn

20/02/2006 09:08:00
Quote Anchor link
Je kunt in je link eenvoudig twee dingen opnemen; het sorteerveld en de volgorde.

Dan ziet je link er bv zo uit:
pagina.php?sorteer=naam&volgorde=ASC

via $_GET['sorteer'] krijg je dan het veld en via $_GET['volgorde'] de volgorde.

Ik snap nog niet precies wat je bedoelt met:

"alleen kwam ik bij het probleem dat ik wil dat hij alle eigenschappen neemt om te sorteren en niet 1"
 
Jorn

jorn

20/02/2006 09:16:00
Quote Anchor link
hij moet eigenschap 1, eigenschap2 , eigenschap 3 eigenschap4 en eigenschap5 bij elkaar optellen en dan sorteren van hoog naar laag

maar kan ik als ik dan heb:
$sorteer = $_GET['sorteer'];
$volgorde = $_GET['volgorde'];

kan ik dan gewoon?:
$sql = "SELECT * FROM Coureur ORDER BY '$order' '$volgorde'";
 
Jan Koehoorn

Jan Koehoorn

20/02/2006 09:23:00
Quote Anchor link
oeps foutje gemaakt, momentje
Gewijzigd op 20/02/2006 09:25:00 door Jan Koehoorn
 
Martijn Wieringa

Martijn Wieringa

20/02/2006 09:24:00
Quote Anchor link
SELECT * FROM tabel ORDER BY veld1 ASC, veld2 ASC, veld3DESC, veld4 DESC, veld5 ASC, veld6 DESC (etc..)
 
Jan Koehoorn

Jan Koehoorn

20/02/2006 09:26:00
Quote Anchor link
@ Pholeron: nee, dat bedoelt hij niet. Ik maak wel een voorbeeldje
 
Jan Koehoorn

Jan Koehoorn

20/02/2006 09:29:00
Quote Anchor link
Als je nu op totaal wilt sorteren wordt je url:
pagina.php?sorteer=optellen&volgorde=DESC

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    if (isset ($_GET['sorteer'], $_GET['volgorde']) {
        if ($_GET['sorteer'] = 'optellen') {
            $sql = "
                SELECT veld1, veld2,(eigenschap1 + eigenschap2 + eigenschap3 + eigenschap4 + eigenschap5) AS totaal
                FROM coureurs
                ORDER BY totaal "
. $_GET['volgorde'];
        }

        else {
            $sql = "
                SELECT veld1, veld2
                FROM coureurs
                ORDER BY "
. $_GET['sorteer'] . " " . $_GET['volgorde'];
        }

        // en hier je query uitvoeren
    }
?>


edit: en bij veld1, veld2 enz natuurlijk even je eigen veldnamen invullen.
Gewijzigd op 20/02/2006 09:30:00 door Jan Koehoorn
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.