ORDER BY
Ik heb aantal keren geprobeerd om volgorde op juiste rij te krijgen met ORDER BY columname, maar ik krijg steeds tegenovergestelde.
Ik wil hem orderen bij 'id', dus bijvoorbeeld op deze manier:
1
2
3
4
5
6
7
8
etc..
etc..
etc..
Wat is het beste dat je kunt doen? Iets met GROUP die bij 1 begint en verder gaat?
Alvast bedankt!
Of DESC ipv ASC
of bedoel je heel wat anders? Je geeft nogal weinig aanknopingspunten, bijv welke query je gebruikt en wat je dan krijgt en wat er dus precies fout aan is
Dat heb ik al geprobeerd, zowel ASC als DESC, maar dan krijg ik juist tegenovergestelde. Hij begint dan van onder naar boven, terwijl het juist andersom moet. Het moet beginnen bij 1 en zo verder naar de laatste cijfer.
Query:
Goto Learn op 09/08/2014 04:36:15:
Hier staat geen enkele order in...
Code (php)
1
$mysqli->query("SELECT mess_folder_id, mess_folder_name FROM user_messages_folders WHERE mess_user_id = '0' ORDER BY id ASC") or die($mysqli->error);
Ps. als mess_user_id een INT is, hoeven er geen '' om de 0
Gewijzigd op 09/08/2014 08:24:13 door Tobias Tobias
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$mysqli->query("SELECT mess_folder_id,
mess_folder_name
FROM
user_messages_folders
WHERE
mess_user_id = '0'
ORDER BY
mess_folder_id ASC
") or die($mysqli->error);
?>
$mysqli->query("SELECT mess_folder_id,
mess_folder_name
FROM
user_messages_folders
WHERE
mess_user_id = '0'
ORDER BY
mess_folder_id ASC
") or die($mysqli->error);
?>
Gewijzigd op 09/08/2014 08:28:59 door Bart V B
Bedankt voor je antwoord en ja, dat weet ik. Ik heb ORDER BY al weggehaald en dit query dient alleen als voorbeeld, waar ivo om vroeg. Wat dat 0 betreft, bedankt voor de tip, maar er is geen 'id' en met order by 'id' in mn eerste bericht bovenaan bedoelde ik juist messs_folder_id, dat is waar ie op moet orderen.
@Bart V B
hehe liever niet.. ik vind het juist zo overzichtelijker, maar zoals ik al tegen Ivo zei, dat werkt dus ook niet. Zowel DESC als ASC
Dit is het resultaat:
Testmap en Mijn Map zijn mappen die door de user zelf aangemaakt is en is dus pas veel later aangemaakt dan de laatste 5 die basis is. Dat wilt dus zeggen dat Testmap en Mijn map onderaan horen te zitten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$mysqli->query("SELECT
mess_folder_id,
mess_folder_name FROM
user_messages_folders
WHERE mess_user_id = 0
ORDER BY mess_folder_id ASC") or die($mysqli->error);
$mysqli->query("SELECT mess_folder_id,
mess_folder_name FROM
user_messages_folders
WHERE mess_user_id = '{$user['user_id']}' ORDER BY mess_folder_id ASC") or die($mysqli->error);
?>
$mysqli->query("SELECT
mess_folder_id,
mess_folder_name FROM
user_messages_folders
WHERE mess_user_id = 0
ORDER BY mess_folder_id ASC") or die($mysqli->error);
$mysqli->query("SELECT mess_folder_id,
mess_folder_name FROM
user_messages_folders
WHERE mess_user_id = '{$user['user_id']}' ORDER BY mess_folder_id ASC") or die($mysqli->error);
?>
Gewijzigd op 09/08/2014 14:07:45 door Goto Learn
Maar doe dan de rest een lol, en schrijf het op dit forum alsnog over meerdere regels uit. De rest van de wereld die jou wil helpen is er namelijk wel mee gediend.
Dat begrijp ik ja. Zie bovensstande bericht dat ik verder bewerkt hebt.
Toevoeging: Erwin H, er zit limit op, dus er is geen sprake van kilometers lang scrollen. Voor je gaat zeggen: 'maar ik zie geen limit', klopt.. ik heb dat even tijdelijk weggehaald, zodat het niet te verwarrend gaat worden voor mensen hier om te lezen, want doel is nu immers even ORDER BY
Gewijzigd op 09/08/2014 13:56:32 door Goto Learn
Dit:
Code (php)
1
2
3
2
3
<?php
$mysqli->query("SELECT mess_folder_id, mess_folder_name FROM user_messages_folders WHERE mess_user_id = 0 ORDER BY mess_folder_id ASC") or die($mysqli->error);
?>
$mysqli->query("SELECT mess_folder_id, mess_folder_name FROM user_messages_folders WHERE mess_user_id = 0 ORDER BY mess_folder_id ASC") or die($mysqli->error);
?>
versus dit dus:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$mysqli->query(
"SELECT mess_folder_id, mess_folder_name
FROM user_messages_folders
WHERE mess_user_id = 0
ORDER BY mess_folder_id ASC"
) or die($mysqli->error);
?>
$mysqli->query(
"SELECT mess_folder_id, mess_folder_name
FROM user_messages_folders
WHERE mess_user_id = 0
ORDER BY mess_folder_id ASC"
) or die($mysqli->error);
?>
Gewijzigd op 09/08/2014 13:59:43 door Erwin H
Je begrijpt me even niet goed, geloof ik. Ik bedoel dat ik hier ook gewoon gehele query had kunnen plakken met limit 10 achter de query, maar dat heb ik dus express even weggelaten, omdat ik de regel korter wou houden zodat order by overzichtelijker te zien is (Op dit forum).
Toevoeging: @Erwin H, er zijn nu dus 2 querys..
Gewijzigd op 09/08/2014 14:02:16 door Goto Learn
Of er nu wel een LIMIT clause en eventueel nog tien JOINS aan zitten, of niet, schrijf je query niet op 1 regel, maar breek het op in de functionele brokken. Dan is direct duidelijk hoe die query eruit ziet. Op die ene regel van jou niet!
Maar doe het ook gewoon lekker niet, als je het liever moeilijk maakt voor mensen die je proberen te helpen.
Gewijzigd op 09/08/2014 14:03:12 door Erwin H
Aah okee.. maar zo word mijn script alleen maar langer en langer zo op deze manier en dat vind ik dus irritant, maar voor op dit forum kan ik hem natuurlijk wel overzichtelijker maken.
Gewijzigd op 09/08/2014 14:03:59 door Goto Learn
Hoe onduidelijk je het in je eigen script maakt moet je zelf weten, niemand hier die daar doorheen gaat. Maar op dit forum wordt het door iedereen gewaardeerd als je het iedereen wat makkelijker maakt.
Klopt, daar heb je gelijk in en daar zal ik rekening mee houden!
Dan naar het probleem. Kan je laten zien wat de daadwerkelijke output is van je query. Dus zowel id, als name?
Gewijzigd op 09/08/2014 14:07:51 door Erwin H
Ik heb dus 2 querys, waarvan eerste query met mess_user_id die op 0 staat, wat wilt zeggen dat het standaard mappen zijn die men niet mag verwijderen en ander query met user_id van de user die door de user zelf mappen zijn aangemaakt en als ik het zo op deze manier doet met ASC:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$mysqli->query("SELECT
mess_folder_id,
mess_folder_name FROM
user_messages_folders
WHERE mess_user_id = 0
ORDER BY mess_folder_id ASC") or die($mysqli->error);
$mysqli->query("SELECT mess_folder_id,
mess_folder_name FROM
user_messages_folders
WHERE mess_user_id = '{$user['user_id']}' ORDER BY mess_folder_id ASC") or die($mysqli->error);
?>
$mysqli->query("SELECT
mess_folder_id,
mess_folder_name FROM
user_messages_folders
WHERE mess_user_id = 0
ORDER BY mess_folder_id ASC") or die($mysqli->error);
$mysqli->query("SELECT mess_folder_id,
mess_folder_name FROM
user_messages_folders
WHERE mess_user_id = '{$user['user_id']}' ORDER BY mess_folder_id ASC") or die($mysqli->error);
?>
Dan krijg ik juist de mappen die door de user zelf aangemaakt zijn bovenaan, terwijl die juist onderaan moet staan.
Gewijzigd op 09/08/2014 14:10:42 door Goto Learn
Maar waarom doe je het in twee queries en niet in 1?
Daar had ik ook al aangedacht, maar ik zou niet precies weten hoe ik dat op juiste manier kan doen. Kun je misschien een voorbeeld geven?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$mysqli->query(
"SELECT mess_folder_id, mess_folder_name
FROM user_messages_folders
WHERE mess_user_id = 0 OR mess_user_id = ".$user['user_id']."
ORDER BY mess_user_id ASC, mess_folder_id ASC")
?>
$mysqli->query(
"SELECT mess_folder_id, mess_folder_name
FROM user_messages_folders
WHERE mess_user_id = 0 OR mess_user_id = ".$user['user_id']."
ORDER BY mess_user_id ASC, mess_folder_id ASC")
?>
Speel nu gewoon even met de sortering tot je het goed hebt. Aangezien ik niet precies weet hoe je het wilt en hoe de ids zitten.
Met beetje aanpassingen in mijn function doordat er nu maar 1 query wordt gebruikt geeft ie juiste volgorde aan. Bedankt voor je hulp en geduld! Dat was goede les in eenmalige gebruik van query.