14. december 2003 - 18:13Der er
38 kommentarer og 1 løsning
Hjælp til inner join, hvis det er det jeg skal bruge her.
jeg ved man kan bruge enten underforspørgelserm inner joins eller lign, men ved ikke helt hvorn det fungere endnu og vil gerne lærer det.
vil gerne have dette formindsket til en enkelt query( et enkelt okald til min db )
kode: " include("connect.php"); $query1 = mysql_query("SELECT emne_id, emne FROM forum_emner"); $query2 = mysql_query("SELECT bruger FROM forum_svar ORDER BY dato, sprg_id DESC");
while($row1 = mysql_fetch_array($query1)){ $row2 = mysql_fetch_array($query2); ?> <tr> <td height="40" valign="top"><? print $row1[emne];?></td> <td valign="top"><? $query = mysql_query("select count(*) as antal from forum_sprg WHERE emne_id = '2'"); $row = mysql_fetch_array($query); print $row[antal];?></td> <td valign="top"><? $query = mysql_query("select count(*) as antal from forum_svar WHERE sprg_id = '1'"); $row = mysql_fetch_array($query); print $row[antal];?></td> <td valign="top"><? print $row2[bruger];?></td> <td> </td> </tr> <? } ?> "
har forsøgt mig med nogle underforespørgelser men ikke helt med helt endnu så håber i kan hjælpe mig på på vej herinde ..
tak på forhånd.
hvis det har relevants det som jeg har prøvet mig frem med så er koden her
include("connect.php"); $query3 = mysql_query(" SELECT forum_svar.bruger AS svar_bruger, forum_sprg.bruger AS sprg_bruger, forum_sprg.dato AS sprg_dato, (SELECT COUNT(*) FROM forum_sprg WHERE bruger = 'Gregorian') AS antal FROM forum_sprg, forum_svar ORDER BY forum_sprg.sprg_id, forum_svar.dato DESC "); while($row3 = mysql_fetch_array($query3)){ print $row3[svar_bruger]." - ".$row3[sprg_bruger]."<br>"; print $row3[antal]; }
forum_sprg, som indeholder de oprettede spørgsmål sprg_id emne_id bruger dato 1 2 Gregorian 20031412 2 2 Meaa 20031312
forum_svar, som indeholder de oprettede spørgsmål svar som sprg_id bruger dato post 1 Gregorian 20031214173547 Følgende bartons er locked: 2 Test 20031213173512 besked
forum_sprg og forum_svar er sammenkædet vha. sprg_id og opdelt så svar og spørgsmål ligger hvert for sit.
sprg_id henviser til forum_emner som indeholder alle de overordnere emner i forummet, så det er let at oprette/slette nye/gamle. ser sådan ud:
jeg vil gerne have udtrukket en beregning af hvor mange spørgsmål der er oprettet og hvor mange besvarelser der samlet er i hvert emne. Derudover skal man kunne se den sidste persons navn (altså bruger,som den hedder i db) samt emne navnet.
$query1 = mysql_query("SELECT emne_id, emne FROM forum_emner"); $query2 = mysql_query("SELECT bruger FROM forum_svar ORDER BY dato, sprg_id DESC");
$query = mysql_query("select count(*) as antal from forum_sprg WHERE emne_id = '2'"); $query = mysql_query("select count(*) as antal from forum_svar WHERE sprg_id = '1'");
SELECT forum_emner.emne,COUNT(*) FROM (forum_sprg JOIN forum_svar ON forum_sprg.sprg_id = forum_svar.sprg_id) JOIN forum_emner ON forum_sprg.emne_id = forum_emner.emne_id GROUP BY forum_emner.emne
oki.. den finder jeg selv ud af så, men der er en fejl i mysql-en
include("connect.php"); $query = mysql_query(" SELECT forum_emner.emne,COUNT(*) FROM (forum_sprg JOIN forum_svar ON forum_sprg.sprg_id = forum_svar.sprg_id) JOIN forum_emner ON forum_sprg.emne_id = forum_emner.emne_id GROUP BY forum_emner.emne");
FROM (forum_sprg JOIN forum_svar ON forum_sprg.sprg_id = forum_svar.sprg_id) JOIN forum_emner ON forum_sprg.emne_id = forum_emner.emne_id
i øverste linie har du forum_sprg og derpå JOIN men ikke i lininen nedenunder! er det fordi du JOIN-er den igen bare medforum_sprg bagefter eller er det fejlen?
Warning: mysql_query(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /home/web/web1875/forum/forum_liste1.php on line 85
Warning: mysql_query(): A link to the server could not be established in /home/web/web1875/forum/forum_liste1.php on line 85 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
fik det til at virke sådan her include("connect.php"); $query1 = mysql_query(" SELECT post, sprg FROM forum_svar,forum_sprg WHERE forum_sprg.sprg_id=forum_svar.sprg_id") or die(mysql_error());
du skal vel have dine points ;) tak for hjælpen selvom det ikke endte med helt det jeg regnede med.. Fik dog en meget bedre forståelse af join forbindelser ;)
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.