2 query's samenvoegen
iChris schreef op 21.10.2008 15:03:
Edit: Bij een goede server is die snelheid trouwens te verwaarlozen. Het is nog altijd MySQL, en als je niet heb genormaliseerd is het alsnog een rotzooi.
Wat nog steeds geen argument is om databasewerk af te wikkelen in PHP. Een beetje structuur, richtlijnen en principes in programmeerwerk kunnen geen kwaad... Crap in === crap out
LEFT GROUP BY u.id?
Nou, LEFT GROUP BY bestaat niet volgens mij. Kijk even naar de MySQL Reference @ dev.mysql.com
Ik hoop nu dus eigenlijk dat Jan nog met een oplossing komt? of iemand met een oplossing om het via PHP op te lossen als het niet via SQL gaat...
iChris schreef op 21.10.2008 14:18:
Omdat dat vele malen efficienter is misschien?JWaarom op SQL niveau als je het ook op PHP niveau kan doen?
Jentie schreef op 17.10.2008 20:22:
Dit zijn dus twee verschillende vragen aan de database, waar je dus ook twee verschillende queries voor moet gebruiken. Dit kun je onmogelijk samenvoegen...van posts alle (posts.*) en van users het type (staat er btw niet in ;) ) en dan nog eens het aantal posts per user.
Alle postinformatie en usertype uit een bepaald topic:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
SELECT
p.*,
u.type
FROM
posts AS p
JOIN
users AS u
ON u.id = p.user_id
WHERE
p.topic_id = 1
p.*,
u.type
FROM
posts AS p
JOIN
users AS u
ON u.id = p.user_id
WHERE
p.topic_id = 1
Aantal posts per user:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
SELECT
u.naam,
COUNT(p.id) AS aantal
FROM
users AS u
JOIN
posts AS p
ON p.user_id = u.id
GROUP BY
u.naam
u.naam,
COUNT(p.id) AS aantal
FROM
users AS u
JOIN
posts AS p
ON p.user_id = u.id
GROUP BY
u.naam
ps. Lees ook deze handleiding over het juiste gebruik van GROUP BY nog eens na. Het lijkt erop dat je nog niet helemaal door hebt wat deze functionaliteit nu precies doet.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
@iedereen dan komt nu het volgende probleem. Ik heb de volgende php code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
while($rij = mysql_fetch_array($result2)) {
$reactie = smiley(str_replace(" ", " ", wordwrap(str_replace("\n", "<br>", $rij["reactie"]), 90, "<br>")));
echo("<tr>
<td width=\"20%\" rowspan=\"2\" valign=\"top\"><font color=\"#0000FF\">" .$rij["auteur"]. "</font><br>
<font size=\"2\"><i>" .$rij["type"]. "</i><br>
Posts: #" .$rij["aantal"]. "</font></td>");
if($_SESSION["gnaam"] == $rij["auteur"] || isset($_SESSION["admin"])) {
echo "<td><a href=\"edit_post.php?nr=" .$rij["nr"]. "\"><img src=\"images/edit.gif\" border=\"0\" alt=\"Edit\" align=\"right\"></a>";
}
else echo "<td>";
echo "<font size=\"2\">Geplaatst op: ".$rij["datum"]."</font>";
if(isset($rij["dt_edit"])) {
echo "<br><font size=\"1\">Dit bericht is aangepast op " .$rij["dt_edit"]. " door " .$rij["name_edit"]. "</font></td></tr>";
}
else echo "</td></tr>";
echo("<tr>
<td valign=\"top\" width=\"80%\">" .$reactie. "</td></tr>");
}
?>
while($rij = mysql_fetch_array($result2)) {
$reactie = smiley(str_replace(" ", " ", wordwrap(str_replace("\n", "<br>", $rij["reactie"]), 90, "<br>")));
echo("<tr>
<td width=\"20%\" rowspan=\"2\" valign=\"top\"><font color=\"#0000FF\">" .$rij["auteur"]. "</font><br>
<font size=\"2\"><i>" .$rij["type"]. "</i><br>
Posts: #" .$rij["aantal"]. "</font></td>");
if($_SESSION["gnaam"] == $rij["auteur"] || isset($_SESSION["admin"])) {
echo "<td><a href=\"edit_post.php?nr=" .$rij["nr"]. "\"><img src=\"images/edit.gif\" border=\"0\" alt=\"Edit\" align=\"right\"></a>";
}
else echo "<td>";
echo "<font size=\"2\">Geplaatst op: ".$rij["datum"]."</font>";
if(isset($rij["dt_edit"])) {
echo "<br><font size=\"1\">Dit bericht is aangepast op " .$rij["dt_edit"]. " door " .$rij["name_edit"]. "</font></td></tr>";
}
else echo "</td></tr>";
echo("<tr>
<td valign=\"top\" width=\"80%\">" .$reactie. "</td></tr>");
}
?>
Hiermoet dus het aantal posts komen te staan. Hoe krijg ik die er dan in?
p.s. in $rij zitten alle reacties per topic en de user type etc alleen $rij["aantal"] bestaat dus niet aangezien die niet in dezelfde query kan.
Gewijzigd op 01/01/1970 01:00:00 door Jan Horden
iChris miss een idee?
of moet ik hier nu een aparte thread van maken in de php sectie?