Avatar billede fqthjoe Nybegynder
22. juli 2002 - 11:11 Der er 8 kommentarer og
1 løsning

Forespørgsel - rækkefølge

Hej Eksperter
Jeg laver en forespørsel på X antal felter fra min Mysql-base. Samtidig beregner jeg et gennemsnit ud fra et felt "karakter" som returneres i en kolonne. Hvordan/kan jeg få sorteret min tabel efter dette fiktive "felt/beregning". ORDER BY i min SQL virker vel kun hvis der decideret er et feltnavn at sortere på. Eller i modsat fald kan jeg istedet lave et felt i min Mysql-base der kun indeholder en beregning, altså altså gennemsnit=poster/karakter.
Avatar billede mortenfn Nybegynder
22. juli 2002 - 11:24 #1
jo - jeg bruger denne

select *,count(ip) as antal from tabel order by antal
Avatar billede fqthjoe Nybegynder
22. juli 2002 - 13:53 #2
Kan ikke lige helt hitte ud af det. Ellers forklarer jeg mig forkert.
Prøver lige igen:
Henter feks. ID,NAVN,KARAKTER FROM MinBase
Laver en forespørgsel med ANTAL (id) og SUM (karakter)
Herefter laver jeg en beregning ala $gennemsnit=ANTAL/SUM og runder den af til et pænt tal.
Så skriver jeg data'ene ud i en tabel, med kolonnerne:
ID,NAVN,GENNEMSNIT
ALt virker perfekt. Men nu vil jeg gerne have det sorteret efter gennemsnit. Kan det lade sig gøre ?.
Eller som alternativ, kan der oprettes et "regnet felt" i min base, der udfører denne beregning.
Håber en kan hjælpe mig videre, måske mortenfn
Avatar billede myplacedk Nybegynder
22. juli 2002 - 14:05 #3
Så er det vel bare "ORDER BY gennemsnit", når du henter fra den nye tabel?

Prøv at vise den præcise SQL-query, så skulle det være nemt at sætte sortering på. :)
Avatar billede fqthjoe Nybegynder
22. juli 2002 - 14:31 #4
<html>
<head>
<title>Opslagstavlen</title>
<meta name="Generator" content="Stone's WebWriter 3.5">
<style>
A:link {text-decoration: none}
A:visited {text-decoration: none}
A:active {text-decoration: none}
A:hover {text-decoration: underline}
</style>
</head>

<body text="#000000">
<body bgcolor="#C0C0C0">

<font face="verdana,arial" size="4">Opslagstavlen<p>
<font size="2">
<b>Tips, tricks og gode råd: - TOP10</b><br>
<?
include("config.php");
mysql_connect($host,$brugernavn,$kodeord);
mysql_select_db($database);
echo '<p><p><TABLE align=center BORDER=1 CELLSPACING=1 CELLPADDING=1 WIDTH="90%">  <CAPTION><CENTER><H1><I>Top10</I></H1>';
echo "<br></CENTER></CAPTION> <TR><TD>overskrift<TD>seneste karakter<TD>gennemsnit karakter";
// Henter overskrift
$query = mysql_query("SELECT opslagstavle.id,opslagstavle.overskrift,kommentarer.karakter,kommentarer.tipid FROM opslagstavle opslagstavle, kommentarer kommentarer WHERE opslagstavle.id = kommentarer.id ORDER BY `karakter` DESC LIMIT 0, 30 ");
while($r = mysql_fetch_array($query)) {
$id = $r["id"];
$overskrift = $r["overskrift"];
$karakter = $r["karakter"];
$count = mysql_query("SELECT * FROM kommentarer WHERE tipid='$id'");
$antal = mysql_num_rows($count);
// Lægger karaktererne sammen
$sql = mysql_query("SELECT SUM(karakter) AS ialt FROM kommentarer WHERE tipid='$id'");
$result = mysql_fetch_array($sql);
$ialt = $result["ialt"];
// Regner gennemsnittet - alle karaktere plusset og divideret med antallet af kommentarer
$gennemsnit = $ialt / $antal;
// Runder tallet ned til et pænt tal
$gennemsnit = round($gennemsnit);
// Udskriver gennemsnittet
//echo "Gennemsnittet er på: $gennemsnit";
    echo '<TR>';
//    echo '<TD>', $r["overskrift"];
//    echo '<TD>', $r["karakter"];
echo "<TD><a href=\"show.php?id=$id\">$overskrift</a><br>";
echo "<TD><a href=\"show.php?id=$id\">$karakter</a><br>";
echo "<TD><a href=\"show.php?id=$id\">$gennemsnit</a><br>";
    echo '</TR>';
}
echo ' </table>'; 
?>

</body>
</html>
Avatar billede myplacedk Nybegynder
22. juli 2002 - 14:56 #5
Det der er HTML, PHP og adskillige SQL-queries. :)

Er det denne SQL-query:
SELECT SUM(karakter) AS ialt FROM kommentarer WHERE tipid='$id'

Så er det bare:
SELECT SUM(karakter) AS ialt FROM kommentarer WHERE tipid='$id' ORDER BY ialt
Avatar billede mortenfn Nybegynder
22. juli 2002 - 15:15 #6
dette udtræk vil nok kun give et resultat så der vil ikke være noget at sorterer(order)
Avatar billede myplacedk Nybegynder
22. juli 2002 - 15:24 #7
Det har du da egentlig ret i.
Well, jeg gider ikke lede efter den relevante kode, det må spørgeren selv klare. :)
Avatar billede fqthjoe Nybegynder
30. juli 2002 - 22:43 #8
Ok. Jeg arbejder slev videre, og ser om jeg kan løse det.
Avatar billede fqthjoe Nybegynder
30. juli 2002 - 22:43 #9
lukker så ? igen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester