12. juni 2004 - 02:41Der 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...
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)
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 ;)
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...
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..
var åbenbart en større udfordring, kan huske jeg fandt en løsning, men den var endel længere end som så....
Synes godt om
Ny brugerNybegynder
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.