$select = mysql_query("SELECT * FROM questions INNER JOIN answers ON (questions.questions_id = answers.users_id) INNER JOIN users ON (users.users_id = answers.users_id)");
ik heb een query die per users de ingevulde vragen en de antwoorden list. Hoe zou ik in deze query kunnen groeperen zodat ik de users zie, daaronder hun vragen en antwoorden..
Je query iets ander opbouwen en het resultaat sorteren:
SELECT
u.user_name,
u.user_id,
q.question_name
a.answer_body
FROM
users AS u
INNER JOIN
answers AS a
ON
a.user_id = u.user_id
INNER JOIN
questions AS q
ON
q.question_id = a.question_id
ORDER BY
u.user_id, q.question_id
In php binnen de while lus dan controleren wanneer het user_id verandert.
GROUP BY gebruik je wanneer je berekeningen wil doen.
bv. het gemiddelde aantal punten van studenten; tellen hoeveel users 'Jan' heten, ...
Bekijken we even dit laatste voorbeeld.
Wat dan gebeurt, is dat je 1 record krijgt.
Alle records met naam = 'Jan' worden samengeperst tot 1 record.
1 record met naam = 'Jan'; en met de berekening. Nu, aangezien je slechts 1 record hebt, kan je onmogelijk de andere gegeves (bv. e-mailadres, GSM, ...) van de andere Jannen bekijken.
Wat in de praktijk gebeurt: het eerste record dat mySQL tegenkomt, wordt gebruikt voor de overige velden.
wat bedoel je dan met "In php binnen de while lus dan controleren wanneer het user_id verandert." hoe zou ik dat dan doen? bedankt alvast!
[size=xsmall]Toevoeging op 10/09/2012 14:52:08:[/size]
Kris Peeters op 10/09/2012 13:40:42
[quote="Miguel Stevens op 10/09/2012 13:26:03"]
... moet het dan niet met een group concat? ...
GROUP BY gebruik je wanneer je berekeningen wil doen.
bv. het gemiddelde aantal punten van studenten; tellen hoeveel users 'Jan' heten, ...
Bekijken we even dit laatste voorbeeld.
Wat dan gebeurt, is dat je 1 record krijgt.
Alle records met naam = 'Jan' worden samengeperst tot 1 record.
1 record met naam = 'Jan'; en met de berekening. Nu, aangezien je slechts 1 record hebt, kan je onmogelijk de andere gegeves (bv. e-mailadres, GSM, ...) van de andere Jannen bekijken.
Wat in de praktijk gebeurt: het eerste record dat mySQL tegenkomt, wordt gebruikt voor de overige velden.
[/quote]
Hm. heb 3uur ernaar gekeken en alles geprobeerd.. maar kom er niet uit! ziet er iemand de fout ? alle namen van tabellen en rijen kloppen in de php
$result = mysql_query("
SELECT
u.users_name,
u.users_id,
q.questions_name
a.answers_body
FROM
users AS u
INNER JOIN
answers AS a
ON
a.users_id = u.users_id
INNER JOIN
questions AS q
ON
q.questions_id = a.questions_id
ORDER BY
u.users_id, q.questions_id
");
$user_id = -1;
while ($row = mysql_fetch_assoc($result)) {
if ($user_id != $row['users_id']) {
if ($user_id != -1) {
echo '</div>';
}
echo '<div class="box">
<div class="boxhead">
' . $row['users_name'] . '
</div>';
$user_id = $row['users_id'];
}
//hier kun je dan de vragen met antwoorden tonen
}
?>
Volgens mij had Ger 1 regeltje verkeerd staan... Probeer deze eens:
<?
//je hebt de querie uitgevoerd en gecontroleerd of ie gelukt is!!!
$user_id = -1;
while ($row = mysql_fetch_assoc($result)) {
if ($user_id != $row['user_id']) {
if ($user_id != -1) {
echo '</div>';
// hier accolade weg
echo '<div class="box">';
} // hier neerzetten
echo' <div class="boxhead">
' . $row['user_name'] . '
</div>';
$user_id = $row['user_id'];
}
//hier kun je dan de vragen met antwoorden tonen
}
Ik krijg nog steeds deze fout. line 35 is de 1e lijn van de code waar de while loop begint. dit wil zeggen een query fout ? is er een manier om de query te controleren? bedankt!
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\radar\index.php on line 35