使用3个表时,操作数应包含1列

时间:2013-04-26 09:57:42

标签: mysql sql

我有3张桌子; COMMUNITIESMEMBERSCHECKINS

根据访问者的社区选择,我希望该列表是属于该社区的成员的最后一次检入。

我收到Operand should contain 1 column(s)错误,包含以下代码。

我将非常感谢您的帮助!

    cFilter = Request.QueryString("Filter")


SQL = "SELECT C.CheckinID, C.CheckInPlatform, C.MemberID, C.VENUENAME, C.VENUECITY, C.VENUECOUNTRY, C.VENUECREATEDAT, C.CheckInDateEntered"
    SQL = SQL & " FROM CHECKINS C"
    SQL = SQL & " WHERE C.CheckinID"
    SQL = SQL & " IN ( SELECT MAX(CheckinID)"
    SQL = SQL & " FROM CHECKINS"
    SQL = SQL & " GROUP BY MemberID"
    SQL = SQL & " )"
    SQL = SQL & " AND C.MemberID"
    SQL = SQL & " IN ( SELECT M.MemberID, M.CommunityID"
    SQL = SQL & " FROM MEMBERS M"
    SQL = SQL & " WHERE M.CommunityID = "& cFilter &""
    SQL = SQL & " )"
    SQL = SQL & " ORDER BY C.CheckInDateEntered DESC"
    Set objCheckins = objConn.Execute(SQL)

1 个答案:

答案 0 :(得分:0)

以下部分:

C.MemberID IN ( SELECT M.MemberID, M.CommunityID
    FROM MEMBERS M
    WHERE M.CommunityID = <your var here>
    )

应细分为:

(
(C.MemberID IN ( SELECT M.MemberID
    FROM MEMBERS M
    WHERE M.CommunityID = <your var here>
    )
)
OR
(C.MemberID IN ( SELECT M.CommunityID
    FROM MEMBERS M
    WHERE M.CommunityID = <your var here>
    )
)
)

虽然我认为可以跳过OR子句的后一部分。

修改

由于您选择条件为M.CommunityID的{​​{1}};一个简单的陈述,如:M.CommunityID = <your var here>就足够了。