0

私は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     |

テーブルをプルアップして、Assignsu_id と admin_u_id をそれぞれのユーザー名に置き換え、section_id をセクション名に置き換えようとしています。

私がこれまでに持っているもの:

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

私を失望させるのは、選択行です。users.id を異なる値で2回表示したい。

正しい方向への助けやプッシュは大歓迎です。

ありがとう!!!

編集:これが実際のテーブル名です。

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:私はばかです。テーブルを適切にセットアップしませんでした。みなさん正解でした!お手間をおかけしてすみません!!!

4

3 に答える 3

2
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 フィドルの例

出力

| U_ID | ID | USERNAME | ADMINUSERNAME | SECTIONNAME |
------------------------------------------------------
|   44 |  1 |    user1 |     useradmin |        Test |
于 2012-06-25T21:43:15.930 に答える
1
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

INNER JOIN にエイリアスを追加するだけで、ユーザー「user」テーブルとユーザー「admin」テーブルを区別できます。

ここで、結果は次のような配列になります。[id, user_name, admin_name, section_name]

于 2012-06-25T21:43:26.090 に答える
1

テーブルにエイリアスを割り当ててみてください。例:

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
于 2012-06-25T21:44:37.100 に答える