简体   繁体   English

2个内部联接2个表mysql

[英]2 inner joins 2 tables mysql

I have 3 tables. 我有3张桌子。

users
------------
id   |  Name   |
------------
44   |   user1 |
45   |useradmin|

Sections
------------
id | Name
------------
1  | Test   |

Assigns
------------
id | u_id | section_id | admin_u_id
-----------------------------------
1  | 44   |    1       |    45     |

I am trying to pull up the Assigns table and replace u_id and admin_u_id with the respective users names and section_id with the sections name. 我试图拉出Assigns表并将u_id和admin_u_id替换为相应的用户名,并将section_id替换为部分名。

What I have so far: 到目前为止,我有:

SELECT Assigns.u_id, Assigns.id, users.id,users.id
FROM Assigns
INNER JOIN users
ON Assigns.u_id=users.id
INNER JOIN users
ON Assigns.admin_u_id=users.id
INNER JOIN Sections
ON Assigns.section_id=Sections.id

What throws me off is the Select line. 让我失望的是选择行。 I want it to display users.id twice with different values. 我希望它用不同的值两次显示users.id。

Any help or push in the right direction is greatly appreciated. 任何帮助或朝着正确方向的推动都将不胜感激。

Thanks!!! 谢谢!!!

EDIT: Here are the actual table names. 编辑:这是实际的表名。

I do not get any errors in my MYSQL query just an empty set is returned 我在MYSQL查询中没有收到任何错误,只是返回了一个空集

SELECT mrfv0_codes_assign.u_id, mrfv0_codes_assign.id, u1.id,u2.id 
FROM mrfv0_codes_assign 
INNER JOIN mrfv0_users u1 ON mrfv0_codes_assign.u_id=u1.id 
INNER JOIN mrfv0_users u2 ON mrfv0_codes_assign.admin_u_id=u2.id 
INNER JOIN mrfv0_codes_sections ON mrfv0_codes_assign.section_id=mrfv0_codes_sections.id

EDIT2: I am an idiot. EDIT2:我是个白痴。 I didn't set up my table properly. 我没有正确设置桌子。 You all had the right answer! 你们都有正确的答案! Sorry for wasting your time!!! 抱歉浪费您的时间!!!

SELECT a.u_id,
       a.id,
       u1.name AS Username,
       u2.name AS AdminUsername,
       s.name AS SectionName
FROM mrfv0_codes_assign a
INNER JOIN mrfv0_users u1 ON a.u_id = u1.id
INNER JOIN mrfv0_users u2 ON a.admin_u_id = u2.id
INNER JOIN mrfv0_codes_sections s ON a.section_id = s.id

SQL Fiddle Example SQL小提琴示例

Output 产量

| U_ID | ID | USERNAME | ADMINUSERNAME | SECTIONNAME |
------------------------------------------------------
|   44 |  1 |    user1 |     useradmin |        Test |
SELECT Assigns.id AS id,
       users.name AS user_name, 
       admins.name AS admin_name, 
       Sections.name AS section_name
FROM Assigns
INNER JOIN users ON Assigns.u_id = users.id
INNER JOIN users AS admins ON Assigns.admin_u_id = admins.id
INNER JOIN Sections ON Assigns.section_id=Sections.id

Just add an alias on your INNER JOIN, it allows you to distinct user "user" table from user "admin" table. 只需在您的INNER JOIN上添加一个别名,就可以将用户“ user”表与用户“ admin”表区分开。

Here, your result will be this kind of array : [id, user_name, admin_name, section_name] 在这里,您的结果将是这种数组: [id, user_name, admin_name, section_name]

Try assigning aliases to your tables. 尝试为表分配别名。 Example: 例:

SELECT Assigns.u_id, Assigns.id, u1.id,u2.id
FROM Assigns
INNER JOIN users u1
ON Assigns.u_id=u1.id
INNER JOIN users u2
ON Assigns.admin_u_id=u2.id
INNER JOIN Sections
ON Assigns.section_id=Sections.id

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

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