次のようなクエリがあります。
SELECT c.review, u.username, c.date, c.good, c.rate_id, r.rating
FROM comments AS c
LEFT JOIN users AS u
ON c.user_id = u.user_id
LEFT JOIN items as i
ON i.items_id = c.item_id
LEFT JOIN master_cat AS m
ON m.cat_id = i.cat_id
LEFT JOIN ratings as r
ON r.item_id = c.item_id
WHERE i.item = '{$item}' AND c.user_id = r.user_id
ORDER by {$sort};
しかし、これは限界です。その WHERE ステートメント ( c.user_id = r.user_id
) が一致する場合、JSON は を出力するためc.rating
です。そうでない場合は、アプリケーションで印刷され、必要なデータがスキップされます。
たとえば、コメントを同じユーザーからの評価に一致させると、データがペアになります。ただし、一部のコメントにはまだ評価 (1 ~ 5 で評価できます) が関連付けられていません。したがって、柔軟性のない WHERE 句でデータをスキップする代わりに、条件付きにして、後でIF 0, print out "not rated"
. (これは SQL ではなく Java で行われます。SQL では、MySQL
DB に 0 を格納するだけで済みます。)
を削除して?WHERE
の一部にする必要があると思います。SELECT