vraag met betrekking tot order by
op volgorde van important
waneer important zelfde waarde heeft op volgorde van reply tijd
waneer er in die gevallen geen replys zijn op volgorde van plaatstijd
(als plaatstijd hoger is dan een andere replytijd moet die plaatstijd hoger staan, en andersom)
de tabellen die ik heb zijn:
gameforum:
gameforum_id
username
gameforum_topic_title
gameforum_time
gameforum_message
gameforum_important
gameforumreply:
gameforum_reply_id
gameforum_id
gameforum_reply_from
gameforum_reply_time
gameforum_reply_message
ik heb al verschillende dingen geprobeerd maar het wil maar niet lukken.
ik kwam wel een paar keer in de buurt denk ik. maar hij gaf steeds een lijst met uitkomsten, op volgorde van important en als die hetzelfde zijn op volgorde van plaatstijd. reply tijd deed die nix mee terwijl ik dat wel zij maarja.
wat die nogmeer deed was de lijst van titles net zo vaak herhalen als het aantal posts dat zijn gemaakt. ik weet het nu dus egt niet meer. dus plz help me
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$result = mysql_query("SELECT * FROM gameforum ORDER BY gameforum_important");
if (mysql_num_rows($result) >= 1)
{
while ($rij = mysql_fetch_array($result))
{
echo "<br>".$rij['gameforum_topic'];
}
}
else
{
echo 'geen topics';
}
$result = mysql_query("SELECT * FROM gameforum ORDER BY gameforum_important");
if (mysql_num_rows($result) >= 1)
{
while ($rij = mysql_fetch_array($result))
{
echo "<br>".$rij['gameforum_topic'];
}
}
else
{
echo 'geen topics';
}
dit zet het alleen op volgorde van important.
maar het doet nix voor degenen die dezelfde waarden hebben in important.
ik zat zelf te denken aan
SELECT gameforum.gameforum_topic_title, gameforum.gameforum_time, gameforumreply.gameforum_reply_time
FROM gameforum, gameforumreply
ORDER BY gameforum.gameforum_important DESC, gameforumreply.gameforum_reply_time DESC, gameforum.gameforum_time DESC
en ik heb zitte proberen met een GROUP BY van gameforum_id om ervoor te zorgen dat de serie titles niet net zo vaak herhaald word als het aantal posts.
maar dat lukt me niet egt goed. ook heb ik getest met
MAX(gameforum_reply_id) gecombineerd met GROUP BY van gameforum_id om te kijken of ik dan de hoogste tijd waarde kan krijgen van een reply, want nu zet die nog steeds de topics voor elke tijd neer dat er een post is geplaatst
Als je dus iets anders wilt, zul je je datamodel aan moeten passen. Het is namelijk zo dat je het eerste bericht uit een topic, zoals je nu in gameforum_message opslaat, net als een reply gewoon als een 'bericht in een topic' kunt zien. Je zou dus alle berichten (zowel eerste berichten als replies) dus in 1 tabel kunnen plaatsen. Op die manier heb je wel de mogelijkheid om te sorteren op datum van laatste bericht in een topic.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$query = "SELECT * FROM gameforum
ORDER BY gameforum_important ASC,
gameforum_time ASC,
gameforum_plaats ASC";
$do = mysql_query($query);
$res = mysql_fetch_*($do);
ORDER BY gameforum_important ASC,
gameforum_time ASC,
gameforum_plaats ASC";
$do = mysql_query($query);
$res = mysql_fetch_*($do);
ASC = ascending (a-z, 0-10)
DESC = descending (z-a, 10-0)
Groet,
Barry
p.s. tabelnamen nog ff aanpassen ;-)
Barry, dat werkt niet aangezien je dan nog niet sorteert op gameforum_reply_time...
Groet,
Barry