我正在尝试从brews
和recipes
表中获取来自表中的跟随者数量的信息,但是我收到了一个sql错误,因为我返回的不仅仅是一个结果在我的查询中。我应该把它分成两个查询吗?或者是否有解决方法可以让我在我的外b.uid
语句中检查多个WHERE
SELECT
b.bid AS bid, b.name AS bname,
r.name AS recipe, b.status AS status,
r.rid, a.f_name, a.l_name, a.pic_loc, a.uid AS uid
FROM
recipes r, brews b, account a
WHERE
b.uid = (SELECT followed FROM follow
WHERE follower = '#cookie.id#')
AND b.rid = r.rid AND b.uid = a.uid
GROUP BY b.bid
ORDER BY b.time DESC
答案 0 :(得分:3)
只需使用WHERE b.uid IN (SELECT followed...
答案 1 :(得分:0)
要返回多个结果集,您需要使用cfstoredproc,但这不是您的问题。在where子句中将“=”符号更改为IN,或将select更改为连接。您的问题只是一个错误的查询,而不是多个结果集。
SELECT
b.bid AS bid, b.name AS bname, r.name AS recipe,
b.status AS status, r.rid, a.f_name, a.l_name,
a.pic_loc, a.uid AS uid
FROM
recipes AS r
LEFT JOIN brews AS b
ON b.rid = r.rid
LEFT JOIN account AS a
ON b.uid = a.uid
LEFT JOIN follow AS f
ON f.followed = b.uid
WHERE f.follower = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#cookie.id#" />
GROUP BY b.bid
ORDER BY b.time DESC
答案 2 :(得分:0)
GROUP BY子句可能也会引起您的问题。如果使用聚合函数(SUM(),AVG(),MIN(),MAX()等等)并且需要对总计的记录进行分组,则查询中只应该有一个GROUP BY子句。进入小组。