32

同じテーブルからいくつかの行を取得しようとしています。これはユーザー テーブルです: ユーザーはuser_idと を持っていuser_parent_idます。

user_id行と行を取得する必要がありuser_parent_idます。私はこのようなものをコーディングしました:

SELECT user.user_fname, user.user_lname
FROM users as user
INNER JOIN users AS parent
ON parent.user_parent_id = user.user_id
WHERE user.user_id = $_GET[id]

しかし、それは結果を示しません。ユーザーレコードとその親レコードを表示したい。

4

6 に答える 6

44

問題はあなたの状態にあると思いますJOIN

SELECT user.user_fname,
       user.user_lname,
       parent.user_fname,
       parent.user_lname
FROM users AS user
JOIN users AS parent 
  ON parent.user_id = user.user_parent_id
WHERE user.user_id = $_GET[id]

編集LEFT JOIN:親のいないユーザーがいる場合は、おそらく使用する必要があります。

于 2013-02-10T10:40:04.860 に答える
2

UNION のように使用することもできます

SELECT  user_fname ,
        user_lname
FROM    users 
WHERE   user_id = $_GET[id]
UNION
SELECT  user_fname ,
        user_lname
FROM    users 
WHERE   user_parent_id = $_GET[id]
于 2013-02-10T10:35:51.433 に答える
1

おそらくこれが選択になるはずです(質問を正しく理解していれば)

select user.user_fname, user.user_lname, parent.user_fname, parent.user_lname
... As before
于 2013-02-10T10:26:13.600 に答える
1

クエリは正常に機能するはずですが、次のようにエイリアスを使用しparentて親テーブルの値を表示する必要があります。

select 
  CONCAT(user.user_fname, ' ', user.user_lname) AS 'User Name',
  CONCAT(parent.user_fname, ' ', parent.user_lname) AS 'Parent Name'
from users as user
inner join users as parent on parent.user_parent_id = user.user_id
where user.user_id = $_GET[id];
于 2013-02-10T10:26:28.703 に答える
1

テーブルの作成方法はわかりませんが、これを試してください...

SELECT users1.user_id, users2.user_parent_id
FROM users AS users1
INNER JOIN users AS users2
ON users1.id = users2.id
WHERE users1.user_id = users2.user_parent_id
于 2016-11-28T14:35:31.990 に答える