0

テーブル ユーザー:

user_id     user_username   user_password
-----------------------------------------
1           tomasr          NULL

表のユーザー項目:

f_user_id   f_moduleItem_id     userItem_value
--------------------------------------------------
1           1                   John
1           2                   Wayne

テーブル モジュール:

module_id   module_systemTitle  module_title
------------------------------------------------
1           users               Users

テーブル モジュール項目:

moduleItem_id   f_module_id     moduleItem_title    moduleItem_order
----------------------------------------------------------------------------
1               1               Firstname           1
2               1               Lastname            2

こんにちは、useritems テーブルから 1 人のユーザーが 1 行のようにデータを含むユーザーのリストを取得する方法です。つまり、平均行数はユーザー数と同じです。

欲望の結果は次のとおりです。

user_id user_username   firstname    lastname
------------------------------------------------------------------------------

1       tomasr          John         Wayne
4

2 に答える 2

0

INNER JOINを使用して、2つのテーブルを結合することをお勧めします。リンクはそれをよりよく説明しますが、このようなものです:

SELECT u.user_username, i.userItem_value 
FROM users u 
INNER JOIN userItems i ON u.user_id=i.f_user_id;

これにより、一致が見つかったすべての行が返されますが、userItemsにusersテーブルの行と一致する行がない場合、users行は結果に含まれないことに注意してください。そのためには、LEFT JOINSを調べて、IFNULL(そのようなもの)を使用する必要があります。

于 2013-02-08T09:00:20.747 に答える
0
SELECT  a.user_ID,
        a.user_username,
        MAX(CASE WHEN c.moduleItem_title = 'Firstname' THEN b.userItem_value ELSE NULL END) `Firstname`,
        MAX(CASE WHEN c.moduleItem_title = 'Lastname' THEN b.userItem_value ELSE NULL END) `Lastname`
FROM    users a
        INNER JOIN useritems b
            On a.user_ID = b.f_user_id
        INNER JOIN moduleitems c
            ON b.f_moduleItem_id = c.moduleItem_id
GROUP   BY a.user_ID, a.user_username
于 2013-02-08T09:19:12.167 に答える