17. februar 2005 - 18:44Der er
14 kommentarer og 1 løsning
Begynder MySQL spørgsmål, lave count i tabel1 med ref. til tabel2
Hey Eksperten.dk
Jeg har lavet nedenstående kode som egentligt virker fint nok, men da jeg gerne vil igang med at lave optimering og lære om det, så ville jeg høre jer hvordan man trækker nedenstående sammen i én SQL sætning da det må være hurtigere for Serveren at bearbejde.
$q = mysql_query("SELECT * FROM lan_news ORDER BY Id DESC LIMIT 10"); while ($data = mysql_fetch_array($q)) { $q2 = mysql_query("SELECT Id FROM lan_news_comments WHERE news_id = '".$data['Id']."'");
// mere kode, men den er ikke nødvendig for at forstå problemet.
hmm, ja og nej! den er ikke helt god nok for jeg skal jo ikke bruge alle data i lan_news_comments, så hvorfor skulle jeg bede serveren om at indlæse dem, det må da bare tage flere ressourcer end godt er.
hmmm, at forklare: Jeg har lan_news som hentes frem. Til hver af de ti nyheder i $q skal jeg have fundet ud af antal kommentarer der er til den nyhed $q2. alle kommentarer ligger i lan_news_comments og derfor skal jeg ikke bruge andet en f.eks. Id fra lan_news_comments så jeg kan lave en mysql_num_rows().... gav det mere mening!
har prøvet med den her, men det virker ikke rigtigt SELECT n.*, COUNT(c.Id) AS antal FROM lan_news n, lan_news_comments c WHERE n.Id = c.news_id GROUP BY n.Id ORDER BY n.Id DESC LIMIT 10
Jeg skal have SQL sætningen til at hente de seneste 10 nyheder fra lan_news og for hver nyhed skal den gennemse hele lan_news_comments for kommentarer til denne nyhed som den så skal tælle op.
Da jeg ikke lige har adgang til mig pc i skrivende stund bliver det lidt på slum. Men det jeg husker den gjorde galt var at selvom der var 2 kommentarer i lan_news_comments så viste feltet "antal" stadig kun én hvilket jo var forkert.
SELECT n.*, COUNT(c.Id) AS antal FROM lan_news n, lan_news_comments c WHERE n.Id = c.news_id GROUP BY n.Id ORDER BY n.Id DESC LIMIT 10
lukkes, fejlen lå i MySQL serverens måde at hashe passwords
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.