【问题标题】:select data on base of comparing multiple values between two columns in same table根据比较同一表中两列之间的多个值来选择数据
【发布时间】:2016-11-11 17:20:12
【问题描述】:

问题编号 (1,3,2,3) 响应 id(1,6,4,7)

Question_Id   Response_Id
           1 =>1
           3=>6
           2=>4
           3=>7

我需要从 users_response(following) 表中选择那些回答了上述所有问题并具有与 response_id (1,6,4,7) 到 question_id(1,3,2, 3)分别。

结果应该只有“2”。

你能帮我或给我一些处理它的提示吗?任何动态方式,因为 question_id 和 response_id 的计数可以增加。就像在这个例子中一样,这里只给出了 4 个条件,但它可以上升或下降。

【问题讨论】:

    标签: php sql cakephp-3.0


    【解决方案1】:
    SELECT * FROM users_responses WHERE Question_Id = 1 AND Question_Id = 3 AND Question_Id = 2 AND Question_Id = 3 AND ( Question_Id = 1 AND Response_Id = 1 ) OR ( Question_Id = 3 AND Response_Id = 6 AND Response_Id = 7 ) OR ( Question_Id = 2 AND Response_Id = 4 ) GROUP BY user_id;
    

    如果只有 4 个,这将是您的查询,如果有多个,您可以使用一对 Question_Id 和 Response_Id 创建一个数组。循环遍历该数组以创建 where 条件,将其存储在变量中并传入查询。

    【讨论】:

    • 这是使用“OR”,因此任何满足单个条件的行都会出现在结果中。我尝试使用“AND”没有选择行,而用户 ID 为 2 的行满足条件。
    • 我已经更新了回答中的查询试试这个@coder
    • 仍然得到错误的结果 (2,6) 而结果应该只有 2 ,这个查询有 "OR" 给出错误的输出但没有使用 "OR" 零结果。 @parth
    • 它需要是 OR,前 4 个条件检查用户是否回答了所有问题和组中的其他 3 个条件检查任何分析器是否正确@coder
    • 但我得到了所有用户,即使他们没有回答所有问题或没有相同的答案
    猜你喜欢
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多