これは私が抱えている問題の例です。クエリは子の行の評価が最も高いので、行paul
とrick
を返す必要があります。代わりに、クエリはdave
とowen
を返しています。私の推測は、最初の子行であるためです。私はposition
でグルーピングしており、MAX(child.rating)
を使用していますが、クエリがうまくいかないように機能していません。実際のテーブルでは、なぜ私はchild.*
をselect句に使用するのかの列がたくさんあります。Mysql JOINクエリMAX値
mytableは
id | name | parentid| position| rating |
1 | mike | 1 | 1 | 6 |
2 | dave | 1 | 2 | 5 |
3 | paul | 1 | 2 | 7 |
4 | john | 1 | 2 | 3 |
5 | mike | 5 | 1 | 8 |
6 | owen | 5 | 2 | 2 |
7 | rick | 5 | 2 | 9 |
8 | jaye | 5 | 2 | 3 |
$getquery = mysql_query("SELECT MAX(child.rating),child.* FROM mytable child
LEFT JOIN mytable parent on parent.parentid=child.parentid
WHERE parent.name LIKE '%mike%' GROUP BY child.position,child.parentid");
while($row=mysql_fetch_assoc($getquery)) {
$id = $row['id'];
$name = $row['name'];
$parentid = $row['parentid'];
if($id==$parentid) {
continue;
}
echo "<p>Name: $name </p>";
}
私はまだdaveとowenを戻していました – user892134
なぜあなたはグループごとに行動していますか?それなしで動作する必要がありますか評価でグループ化しようとします – Mukesh