Avatar billede Six Nybegynder
25. august 2003 - 01:06 Der er 24 kommentarer og
1 løsning

Hjælp til SUM i MySQL

Hej.

Jeg sidder for første gang og skal lege med SUM().

Har ikke rigtig nogen ide, til hvordan jeg skal bære mig an.

CREATE TABLE `comments` (
  `ID` int(11) NOT NULL auto_increment,
  `NewsID` int(11) NOT NULL default '0',
  `dato` text NOT NULL,
  `CommentBody` longtext NOT NULL,
  `user` text NOT NULL,
  PRIMARY KEY  (`ID`)
) TYPE=MyISAM AUTO_INCREMENT=4 ;

Jeg vil så have værdien af den samlede sum fra NewsID hvor ID f.eks. er 6

Har prøvet det her:

$sql = "SELECT SUM(NewsID) FROM comments WHERE NewsID = $ID AS CommentSUM";
Avatar billede detox Nybegynder
25. august 2003 - 01:14 #1
SELECT SUM(NewsID) AS CommentSUM FROM comments WHERE NewsID = $ID
Avatar billede Six Nybegynder
25. august 2003 - 01:27 #2
uhh.. detox.. dig igen. Du er sgu en altvidende person. Mange tak!

Jeg sidder så og prøver at bruge det..

Hvordan er det ny jeg får resultatet af det udskrevet, i php?
Avatar billede detox Nybegynder
25. august 2003 - 01:31 #3
$sql = "SELECT SUM(NewsID) AS CommentSUM FROM comments WHERE NewsID = $ID";
$res = mysql_query($sql) or die(mysql_error());
echo mysql_result($res,0);
Avatar billede Six Nybegynder
25. august 2003 - 01:36 #4
kommer den med fejl hvis der ikke er sat noget i tabellen? altså hvis den returnere $null

Jeg har jo ikke kommentarer til alle mine news.
Avatar billede detox Nybegynder
25. august 2003 - 01:36 #5
Eller bare:

$sql = "SELECT SUM(NewsID) FROM comments WHERE NewsID=$ID";
$res = mysql_query($sql) or die(mysql_error());
echo "Antal kommentarer: ".mysql_result($res,0);
Avatar billede detox Nybegynder
25. august 2003 - 01:39 #6
Næ, så vil den bare give 0.
Avatar billede Six Nybegynder
25. august 2003 - 01:40 #7
hmm.
Jeg får en fejl i det. :(
Avatar billede detox Nybegynder
25. august 2003 - 01:40 #8
Ja, hvilken?
Avatar billede Six Nybegynder
25. august 2003 - 01:44 #9
You have an error in your SQL syntax near '' at line 1

Og den ligger ikke i nærheden af linie 1 den sql sætning der
Avatar billede Six Nybegynder
25. august 2003 - 01:46 #10
Det kan være du vil se hele koden?

Paster lige i tilfælde deraf.

<Font class="text">Alle nyheder</FONT>
<?

$link = db_connect();
$sql = "SELECT * FROM news ORDER BY id DESC";
$res = db_query($sql, $link);

while($tab=mysql_fetch_array($res)) {
$id=$tab["ID"];
$kategori=$tab["kategori"];
$kategori2=$tab["kategori"];
$overskrift=$tab["headline"];
$teaser=$tab["teaser"];
$nyhed= nl2br($tab["bodytext"]);
$navn=$tab["skribent"];
$kilde=$tab["kilde"];
$dato=$tab["dato"];
if ($kategori2 == "ligegyldig") {
$kategori2 = "Ligegyldige Oplysninger";
};
    Echo "       
                <center>
                <table cellspacing=\"0\" cellpadding=\"2\" border=\"0\" width=\"600\">
                    <tr>
                        <td align=\"left\" width=\"450\" bgcolor=\"#D1DBE3\" class=\"text\">Kategori: $kategori2 - $overskrift</td>
                        <td align=\"right\" width=\"150\" bgcolor=\"#D1DBE3\" class=\"text\">$dato</td>
                    </tr>
                    <tr>
                        <td colspan=\"2\" class=\"text\">$teaser</font></td>
                    </tr>
                    <tr>
                        <td colspan=\"2\"><A href=\"?mode=laesnews&kat=$kategori&ID=$id\"><div class=\"text\">Læs mere...</div></A>    </td>
                    </tr>
                </table>
                </center>
                <br>
        ";
$sqlcomment = "SELECT SUM(NewsID) FROM comments WHERE NewsID=$ID";
$rescomment = mysql_query($sqlcomment) or die(mysql_error());
echo "Antal kommentarer: ".mysql_result($rescomment,0);
};

?>
Avatar billede detox Nybegynder
25. august 2003 - 01:47 #11
Det må være fordi $ID ikke er initialiseret. Nu ved jeg ikke hvordan du tildeler den værdi, men sørg for at den får en talværdi.
Avatar billede Six Nybegynder
25. august 2003 - 01:49 #12
Yes, det var så fordi jeg helt havde skudt ud at det er case sensitive.

Men. Den skriver 7 komments og 12.. der er tre poster i hele tabellen.

Du kan se det her: http://80.198.253.88/fjappedk/?mode=allnews
Avatar billede detox Nybegynder
25. august 2003 - 01:49 #13
Husk forskal på små og store bogstaver, brug $id.
Avatar billede Six Nybegynder
25. august 2003 - 01:50 #14
ok, den ligger så NewsID sammen den der...

det var da ikke min mening. :/

Hvordan tæller man antallet af poster der har id=6 i NewsID ?
Avatar billede detox Nybegynder
25. august 2003 - 01:58 #15
SELECT COUNT(*) FROM comments WHERE NewsID=$id GROUP BY NewsID
Avatar billede detox Nybegynder
25. august 2003 - 02:00 #16
Hmm, du har vidst ikke brug for group by:

SELECT COUNT(*) FROM comments WHERE NewsID=$id
Avatar billede Six Nybegynder
25. august 2003 - 02:05 #17
Yes sir, det virker.

Men. Den fejler ved dem der ikke er der. Altså hvis der ikke er noget der er lige sql queryen
Avatar billede detox Nybegynder
25. august 2003 - 02:07 #18
Hvad er fejlen?
Avatar billede Six Nybegynder
25. august 2003 - 02:09 #19
Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 9 in c:\apache\htdocs\fjappedk\inc\main\news\allnews.php on line 41
Antal kommentarer:

Og så tæller den ellers op i index.
Avatar billede detox Nybegynder
25. august 2003 - 02:13 #20
Prøv sådan her:

<font class="text">Alle nyheder</font>
<?
$link = db_connect();
$sql = "SELECT * FROM news ORDER BY id DESC";
$res = db_query($sql, $link);

while($tab=mysql_fetch_array($res)) {
$id=$tab["ID"];
$kategori=$tab["kategori"];
$kategori2=$tab["kategori"];
$overskrift=$tab["headline"];
$teaser=$tab["teaser"];
$nyhed= nl2br($tab["bodytext"]);
$navn=$tab["skribent"];
$kilde=$tab["kilde"];
$dato=$tab["dato"];
if ($kategori2 == "ligegyldig") {
    $kategori2 = "Ligegyldige Oplysninger";
}
?>     
<center>
    <table cellspacing=\"0\" cellpadding=\"2\" border=\"0\" width=\"600\">
        <tr>
            <td align=\"left\" width=\"450\" bgcolor=\"#D1DBE3\" class=\"text\">Kategori: $kategori2 - $overskrift</td>
            <td align=\"right\" width=\"150\" bgcolor=\"#D1DBE3\" class=\"text\">$dato</td>
        </tr>
        <tr>
            <td colspan=\"2\" class=\"text\">$teaser</font></td>
        </tr>
        <tr>
            <td colspan=\"2\"><A href=\"?mode=laesnews&kat=$kategori&ID=$id\"><div class=\"text\">Læs mere...</div></A>    </td>
        </tr>
    </table>
</center>
<br>
<?
$sqlcomment = "SELECT COUNT(NewsID) FROM comments WHERE NewsID=$id";
$rescomment = mysql_query($sqlcomment) or die(mysql_error());
echo "Antal kommentarer: ".mysql_result($rescomment,0);
}
?>
Avatar billede detox Nybegynder
25. august 2003 - 02:17 #21
Sorry:

<font class="text">Alle nyheder</font>
<?
$link = db_connect();
$sql = "SELECT * FROM news ORDER BY id DESC";
$res = db_query($sql, $link);

while($tab=mysql_fetch_array($res)) {
$id=$tab["ID"];
$kategori=$tab["kategori"];
$kategori2=$tab["kategori"];
$overskrift=$tab["headline"];
$teaser=$tab["teaser"];
$nyhed= nl2br($tab["bodytext"]);
$navn=$tab["skribent"];
$kilde=$tab["kilde"];
$dato=$tab["dato"];
if ($kategori2 == "ligegyldig") {
    $kategori2 = "Ligegyldige Oplysninger";
}
?>     
<center>
    <table cellspacing="0" cellpadding="2" border="0" width="600">
        <tr>
            <td align="left" width="450" bgcolor="#D1DBE3" class="text">Kategori: $kategori2 - $overskrift</td>
            <td align="right" width="150" bgcolor="#D1DBE3" class="text">$dato</td>
        </tr>
        <tr>
            <td colspan="2" class="text">$teaser</font></td>
        </tr>
        <tr>
            <td colspan="2"><A href="?mode=laesnews&kat=$kategori&ID=$id"><div class="text">Læs mere...</div></A>    </td>
        </tr>
    </table>
</center>
<br>
<?
$sqlcomment = "SELECT COUNT(NewsID) FROM comments WHERE NewsID=$id";
$rescomment = mysql_query($sqlcomment) or die(mysql_error());
echo "Antal kommentarer: ".mysql_result($rescomment,0);
}
?>
Avatar billede detox Nybegynder
25. august 2003 - 02:27 #22
Det virker som om den anden forespørgsel fucker den første op?
Avatar billede Six Nybegynder
25. august 2003 - 02:30 #23
Mange 1000 gange tak.

Du sørger lige for et svar ik'

Du har dælme fortjent de få point der var at hente :)
Avatar billede detox Nybegynder
25. august 2003 - 02:32 #24
Ok velbekommen, godt det dur!
Avatar billede Six Nybegynder
25. august 2003 - 03:06 #25
Det gør det :)
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