Avatar billede kawaki Nybegynder
12. juni 2004 - 02:41 Der er 4 kommentarer og
1 løsning

Count i mysql.

Nogen friske sjæle her inde!!!

sider her og koger, og kl er ved at være mange, og logiken er væk...

har 2 sql querys der skal lægges sammen og køres i en qurey, men kan ikke lige se hvordan... her kommer de lige..

--
$result = mysql_query("SELECT Nyheder.*,UNIX_TIMESTAMP(DATE) AS FORMATED_TIME, Brugere.USRID,Brugere.NICK FROM Nyheder, Brugere WHERE Nyheder.BID=Brugere.USRID AND Nyheder.Nid=0 ORDER by Nyheder.DATE, Nyheder.ID LIMIT 5");

$result2 = mysql_query("SELECT * FROM Nyheder WHERE Nid=$myrow[ID]");

hader tanken om at jeg ikke lige kan se hvordan jeg skal tælle Nyheder.NID der er ens med Nyheder.ID

de skal bare kunne tælles...
men blabla, count( Nyheder.NID ) AS Nyheder.ID vil ikke lige måske er det bare søvnen der kalder... men ville være glad for et svar i morgen når jeg står op ;)

meningen er at jeg også vil tælle kommentare til nyheden i samme query, så jeg ikke skal lave en query for hver nyhed efter NID med samme ID som den nyhed jeg er ved at query allerede...
Avatar billede arne_v Ekspert
15. juni 2004 - 21:03 #1
Jeg har lidt svært ved at forstå spørgsmålet.

Jeg tolker det som at du har en tabel med nyheder og en tabel med kommentarer og
at du vil have en query som returnerer alle felter fra nyheder og antallet af
kommentarer.

Det vil være noget a la:

SELECT nyheder.a,nyheder.b,nyheder.c,COUNT(*)
FROM nyheder LEFT JOIN kommentarer ON nyheder.X = kommentarer.y
GROUP BY nyheder.a,nyheder.b,nyheder.c

(jeg har brugt lidt abstrakte navne, da jeg ikke helt kan gennemskue
dine navne udfra SQL sætningerne)
Avatar billede kawaki Nybegynder
16. juni 2004 - 22:55 #2
Laver lige en upsum af det vigtigste i tabelerne...
Nyheder.DATE = dato...
Nyheder.BID = Brugere.USRID som har postet nyheden
Nyheder.ID = Nyheds ID
Nyheder.NID = 0 ellers er det Nyheder.ID til posten som den er en kommentar til..
Brugere.USRID = brugerens ID
Brugere.Nick = brugerens login navn

det vil sige, ved post af en nyhed får den eks.
Nyheder.ID = 1 <- Fordi det er det nummer mysql syntes er passende...
Nyheder.BID = 2 <- Fordi det er brugeren med id 2 der poster
Nyheder.NID = 0 <- fordi det er en nyhed og ikke en kommentar... altså nyheder = 0 og kommentare har noget over 0, feks, nummeret (id'et) på den post den kommentere.

så poster bruger 4 en kommentar... så ser det sådan her ud

Nyheder.ID = 2 <- Bare fordi det er den næste i rækken...
Nyheder.BID = 4 <- Fordi det er bruger id 4 der poster..
Nyheder.NID = 1 <- fordi det er en kommentar til nyheden nr. 1

håber at dette er skåret en del mere ud i karton ;)
Avatar billede kawaki Nybegynder
16. juni 2004 - 22:59 #3
for lige at vise hvad jeg vil slippe af med... gider bare ikke 2 querys...
----------------------------------------------------
    $result = mysql_query("SELECT Nyheder.*,UNIX_TIMESTAMP(DATE) AS FORMATED_TIME, Brugere.USRID,Brugere.NICK FROM Nyheder, Brugere WHERE Nyheder.BID=Brugere.USRID AND Nyheder.Nid=0 ORDER by Nyheder.DATE, Nyheder.ID LIMIT 5");

    if ($myrow = mysql_fetch_array($result))
    {
      do
      {
    $fulldate=date("d.m.Y - H:i:s",$myrow["FORMATED_TIME"]);

        $result2 = mysql_query("SELECT * FROM Nyheder WHERE Nid=$myrow[ID]");

    if ($myrow2 = mysql_fetch_array($result2))
    {
      do
      {
        $kommentare = $kommentare + 1;
      }
      while ($myrow2 = mysql_fetch_array($result2));
      printf("");
    }
    mysql_free_result($result2);
-----------------------------------------
osv. osv. osv...
Avatar billede kawaki Nybegynder
16. juni 2004 - 23:05 #4
husk på at den ikke skal komme frem med resultater der har Nyheder.NID større end 0, andet end at den skal tælle alle der ikke har 0 så det passer sammen med Nyheder.ID..
Avatar billede kawaki Nybegynder
13. oktober 2004 - 13:01 #5
var åbenbart en større udfordring, kan huske jeg fandt en løsning, men den var endel længere end som så....
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