webForumDet fria alternativet

Lägga ihop fält och sortera.

Databaser & SQL

4 svar · 341 visningar · startad av belgar

Medlem sedan aug. 20029 inlägg
Frågan#1

Vill lägga ihop två st fält och sortera med dom två fältens gemensamma värde.

det jag har nu är:

SELECT * FROM phpbb_users WHERE user_realname != '0' ORDER BY '(lik_pass + lik_goals)'

Fälten lik_pass och lik_goals ska alltså summeras ihop så att jag kan sortera poängligan på totalt antal poäng.

Medlem sedan dec. 200012 464 inlägg
#2
SELECT * FROM phpbb_users WHERE user_realname <> '0' ORDER BY lik_pass + lik_goals desc
Medlem sedan aug. 20029 inlägg
#3

Det ville inte funka.. :/

Här är utdrag ur koden:

<h1>Ljusblå Poängliga</h1>
<?

if ($sort=="") { $sort="DESC"; $nsort="ASC";}
else if ($sort=="DESC") { $nsort="ASC";}
else { $sort="ASC"; $nsort="DESC";}

switch ($order) {
 case "no":
        $ord="lik_nummer";
        break;
 case "name":
        $ord="user_realname";
        break;
 case "pos":
        $ord="lik_pos";
        break;
 case "gp":
        $ord="lik_games";
        break;
 case "g":
        $ord="lik_goals";
        break;
 case "a":
        $ord="lik_pass";
        break;
 case "tp":
        $ord="lik_pass + lik_goals";
        break;
 case "pim":
        $ord="lik_utv";
        break;
 case "":
        $ord="lik_goals";
        break;
}

modulHead("");
?>
<table width=100% align=center border="0" cellspacing="0" cellpadding="2">
    <tr bgcolor=#CCCCCC>
        <td>Rk</td>
        <td><a href=?order=no&sort=<?=$nsort?>>No</a></td>
        <td><a href=?order=name&sort=<?=$nsort?>>Name</a></td>
        <td><a href=?order=pos&sort=<?=$nsort?>>Pos</a></td>
        <td><a href=?order=gp&sort=<?=$nsort?>>GP</a></td>
        <td><a href=?order=g&sort=<?=$nsort?>>G</a></td>
        <td><a href=?order=a&sort=<?=$nsort?>>A</a></td>
        <td><a href=?order=tp&sort=<?=$nsort?>>TP</a></td>
        <td><a href=?order=pim&sort=<?=$nsort?>>PIM</a></td>
    </tr>
<?

$nr=0;
$row1 = "";
$row2 = "";
$query = "SELECT * FROM phpbb_users WHERE user_realname <> '0' ORDER BY '$ord' $sort";
$result = mysql_query($query);
while ($data = mysql_fetch_array($result)) {

$tp=($data[lik_goals]+$data[lik_pass]);
$pos=substr( $data[lik_pos], 0, 1 );

resten av koden visar resultatet. case "tp" innehåller alltså delen av mysql frågan som styr sort.

Plz help, you are my only hope. ;)

Medlem sedan feb. 20001 270 inlägg
#4

SELECT CONCAT(" ", lik_pass, lik_goals) as sortstring order by sortstring;

CONCAT

Medlem sedan aug. 20029 inlägg
#5

Fick till det =)
Funkar:
SELECT * FROM phpbb_users WHERE user_realname <> '0' ORDER BY lik_pass+lik_goals DESC

Funkar ej:
SELECT * FROM phpbb_users WHERE user_realname <> '0' ORDER BY 'lik_pass+lik_goals' DESC

Dom små ' ' kan göra underverk eller ge huvudvärk.. :D

257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)