<分区>
我有一个非常长的查询,效果很好。我需要向其中添加一个 boolean
元素。
编辑:查询已更新。反射(reflect)下面的答案。新问题:对于每个项目,它现在为每个评级显示一行。例如,如果有 4 个人评价它,如果我是评价者之一,它会显示一行 isMatched = 1;其他三个将是 isMatched = 0。如果有两个 ratnigs,而我都不是,isMatched 显示 0 两次。
$result=mysql_query("
SELECT i.item,
IF (ra.user_id = '{user}',1,0) AS isMatched,
r.ratetotal AS total,
c.commtotal AS comments,
r.rateav AS rate
FROM items AS i
LEFT JOIN master_cat AS c
ON (c.cat_id = i.cat_id)
LEFT JOIN ratings AS ra
ON (i.items_id = ra.item_id)
LEFT JOIN
(SELECT item_id,
COUNT(item_id) AS ratetotal,
AVG(rating) AS rateav
FROM ratings GROUP BY item_id) AS r
ON r.item_id = i.items_id
LEFT JOIN
(SELECT item_id,
COUNT(item_id) AS commtotal
FROM comments GROUP BY item_id) AS c
ON c.item_id = i.items_id
WHERE c.category = '{$cat}' AND i.spam < 30
{$order};");
我想为此添加一个功能。这是一个基于用户的系统,一些用户会对名为 ratings
的表中的项目进行评级。表中的每个评分都会有一个 user_id
,以匹配每一行中对 item_id
评分的人。在上面未显示的 PHP 代码中,我将使用变量与 WHERE
子句的 user_id 进行比较。
我只是想将某种类型的 boolean
添加到此查询中,它会在其中创建一个新列以显示 user_id
是否与当前登录的用户匹配为 true/错误的。
最终,我将以 JSON 格式打印出来并推送到 Java 以用于 Android 应用程序。在应用程序中,如果 SQL 查询找到任何“真实”匹配项,我希望 istView
中的任何项目都显示为“粗体”。最后一点与SQL无关,只是想说明一下应用。
这个查询可以这样修改吗?