Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 左联接查询不';t返回预期结果_Mysql_Sql - Fatal编程技术网

Mysql 左联接查询不';t返回预期结果

Mysql 左联接查询不';t返回预期结果,mysql,sql,Mysql,Sql,我的加入查询有问题,或者我需要一个组 table questions ------------------------------------------- | id | questions_id1| category | ------------------------------------------- | 1 | p1 | 1 | | 2 | p2 | 2,1

我的加入查询有问题,或者我需要一个组

table questions
-------------------------------------------
|     id    | questions_id1|   category  |
-------------------------------------------
|     1     |      p1      |      1       |
|     2     |      p2      |      2,1     |
|     3     |      p3      |      1       |
|     4     |      p4      |      2,1     |
|     5     |      p5      |      2,1     |
------------------------------------------
预期结果:对于用户_id=1

----------------------------------------------------------------------------------------
|     id    | question_id1 |   question_id2    | user_id  | category  | extra_category |
----------------------------------------------------------------------------------------
|     4     |      p4     |     p4             |    u2    |     1     |       1        |
|     5     |      p5     |     p5             |   null   |     1     |       1        |
|     1     |      p1     |     p1             |    u1    |     1     |       1        |
|     2     |      p2     |     p2             |    u1    |     1     |       1        |
|     3     |      p3     |     p3             |    u1    |     1     |       1        |
---------------------------------------------------------------------------------------
预期结果:对于用户_id=2

------------------------------------------------------------------------------------
|     id    |question_id1| question_id2|    user_id   | category   | extra_category |
-------------------------------------------------------------------|----------------|
|     3     |      p3    |      p3     |        u1    |      1     |       1        |
|     5     |      p5    |      p5     |       null   |      1     |       1        |
|     1     |      p1    |      p1     |        u2    |      1     |       1        |
|     2     |      p2    |      p2     |        u2    |      1     |       1        |
|     4     |      p4    |      p4     |        u2    |      1     |       1        |
-------------------------------------------------------------------------------------
用户_1=1的现在结果

-----------------------------------------------------------------------------------
|     id    |question_id1| question_id2|   user_id | category    | extra_category |
-----------------------------------------------------------------------------------
|     1     |    p1      |      p1     |     u2    |       1     |       1        |
|     2     |    p2      |      p2     |     u2    |       1     |       1        |
|     4     |    p4      |      p4     |     u2    |       1     |       1        |
|     5     |    p5      |      p5     |    null   |       1     |       1        |
|     1     |    p1      |      p1     |     u1    |       1     |       1        |
|     2     |    p2      |      p2     |     u1    |       1     |       1        |
|     3     |    p3      |      p3     |     u1    |       1     |       1        |
------------------------------------------------------------------------------------
这个测验有100个问题。每个用户都会收到相同的问题。答案保存在表b中。在下一次:他试图解决一个测试,他已经回答正确的答案显示在最后。还有100个问题

SELECT questions.*, answers.*, extra_category.* FROM extra_category
LEFT JOIN questions ON extra_category.questions_id3 = questions.questions_id1
LEFT JOIN answers ON extra_category.questions_id3 = answers.questions_id2 and answers.user_id = 1
WHERE extra_category = 1 AND category LIKE '%1%' 
order by case when user_id = '1' then 1 else 0 end, a.id ASC

工作正常

什么是
WHERE=?或者组=?
应该是什么意思?这是无效语法。您的查询无法生成预期结果。请附上您的完整查询,不带?。b_2是什么?另外,什么是b_=1?请用有效参数替换占位符参数。如果为表/列提供实名而不是a、b、c,那么解析也会容易得多。如果c-to-a和c-to-b都是一对多关系,则任何连接都会产生具有每个c的笛卡尔乘积(a X b)的结果;左连接不会神奇地消除这种情况。
当b_two='1'
任何表中都没有
b_two
列时。你的意思是说c_两个?
------------------------------------------------------------------------------------
|     id    |question_id1| question_id2|    user_id   | category   | extra_category |
-------------------------------------------------------------------|----------------|
|     3     |      p3    |      p3     |        u1    |      1     |       1        |
|     5     |      p5    |      p5     |       null   |      1     |       1        |
|     1     |      p1    |      p1     |        u2    |      1     |       1        |
|     2     |      p2    |      p2     |        u2    |      1     |       1        |
|     4     |      p4    |      p4     |        u2    |      1     |       1        |
-------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
|     id    |question_id1| question_id2|   user_id | category    | extra_category |
-----------------------------------------------------------------------------------
|     1     |    p1      |      p1     |     u2    |       1     |       1        |
|     2     |    p2      |      p2     |     u2    |       1     |       1        |
|     4     |    p4      |      p4     |     u2    |       1     |       1        |
|     5     |    p5      |      p5     |    null   |       1     |       1        |
|     1     |    p1      |      p1     |     u1    |       1     |       1        |
|     2     |    p2      |      p2     |     u1    |       1     |       1        |
|     3     |    p3      |      p3     |     u1    |       1     |       1        |
------------------------------------------------------------------------------------
SELECT questions.*, answers.*, extra_category.* FROM extra_category
LEFT JOIN questions ON extra_category.questions_id3 = questions.questions_id1
LEFT JOIN answers ON extra_category.questions_id3 = answers.questions_id2 and answers.user_id = 1
WHERE extra_category = 1 AND category LIKE '%1%' 
order by case when user_id = '1' then 1 else 0 end, a.id ASC