简体   繁体   English

SELECT 数据来自多对多表

[英]SELECT data from many-to-many table

I'm trying to get data from a many-to-many table, but the query that I try to do that doesn't work我正在尝试从多对多表中获取数据,但是我尝试执行的查询不起作用

USERS TABLE
+-----------+
| ID | NAME |
+-----------+
|  1 | dani |
+-----------+
|  2 | john |
+-----------+

TASKS TABLE
+------------+
| ID | NAME  |
+------------+
|  1 | learn |
+------------+
|  2 | play  |
+------------+
|  3 | eat   |
+------------+

USERS-TASK TABLE (MANY-TO-MANY)
+--------------------+
| USER_ID | TASK_ID  |
+--------------------+
|  1      | 1        |
+--------------------+
|  1      | 2        |
+--------------------+
|  2      | 1        |
+--------------------+

I'm trying to get the tasks for USER_ID 2 which is 1 record, or USER_ID 1 which is 2 records by supplying the ID, but the query doesn't work...我正在尝试通过提供 ID 来获取 USER_ID 2 (即 1 条记录)或 USER_ID 1 (即 2 条记录)的任务,但查询不起作用...

SELECT TASKS.name
FROM
    USERS,
    TASKS,
    user_task
INNER JOIN
    USERS
  ON user_task.UserId = USERS.id
INNER JOIN
    TASKS 
  ON user_task.TaskId = TASKS.id
   WHERE USERS.id = 1;

Hope you can help me with that.希望你能帮助我。

Try the below - you've mixed JOIN试试下面的 - 你已经混合了 JOIN

SELECT TASKS.name
FROM user_task
INNER JOIN
    USERS
  ON user_task.UserId = USERS.id
INNER JOIN
    TASKS 
  ON user_task.TaskId = TASKS.id
   WHERE USERS.id = 1

Your join in incorrect, try the following.您的加入不正确,请尝试以下操作。

SELECT 
    t.name
FROM user_task ut 
INNER JOIN USERS u
  ON ut.UserId = u.id
INNER JOIN TASKS t
  ON ut.TaskId = t.id
WHERE USERS.id = 1;

If you have an table who store you link between you 2 table, why you dont do that:如果你有一个表来存储你 2 个表之间的链接,为什么你不这样做:

SELECT TASKS.name
FROM
TASKS
INNER JOIN USERS-TASK ON TASKS.ID = USERS-TASK.TASK_ID
WHERE
USERS-TASK.USER_ID = 1

Your join are wrong, you made multi from:你的加入是错误的,你从:

 USERS,
TASKS,
user_task

And after you made your join:在你加入之后:

    INNER JOIN
    USERS
  ON user_task.UserId = USERS.id
    INNER JOIN
    TASKS 
  ON user_task.TaskId = TASKS.id

Just remove your useless "from" and it will be ok只需删除你无用的“从”就可以了

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM