2011-03-12 183 views
0

我试图从brewsrecipes表中获取信息基于表中跟随有多少追随者,但我得到一个SQL错误,因为我正在返回我的查询中有多个结果。我应该把它分成两个查询吗?或者是有作为变通,让我在我的外WHERE声明SQL查询与查询返回多个结果

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 

回答

3

检查多个b.uid只需使用WHERE b.uid IN (SELECT followed...

0

为了返回多个结果集,你需要使用CFSTOREDPROC,但这不是你的问题。在您的where子句中将您的“=”符号更改为IN,或将您的选择更改为加入。你的问题只是一个错误的查询,而不是多个结果集。

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 
0

GROUP BY子句可能也会导致您遇到问题。如果你正在使用聚合函数(SUM(),AVG(),MIN(),MAX()等等),你应该只在你的查询中有一个GROUP BY子句,并且需要对你正在合计的记录进行分组,等等分成子组。