2

これに頭をぶつけて、解決方法がわかりません。ユーザー情報を含むチーム テーブル (個別の値) から、チームコードごとに 1 行を返す必要があります。

テーブル ユーザーは、チーム コードに基づいて複数の値を持つことができますが、1 だけを返す必要があります (どれでも構いません)。私はもう試した:

SELECT a.teamcode, a.area, c.uniqid, c.fullname, c.email
FROM teams a
LEFT JOIN 
(SELECT uniqid, CONCAT(first_name,  ' ', last_name ) AS fullname, email, teamcode from users LIMIT 1) c
on a.teamcode = c.teamcode
WHERE a.area= 'ZF15'

私も最大を試しました:

SELECT a.teamcode, a.area, c.uniqid, c.fullname, c.email
FROM teams a
LEFT JOIN 
(SELECT max(uniqid) as uniqid, CONCAT(first_name,  ' ', last_name ) AS fullname, email, teamcode from users) c
on a.teamcode = c.teamcode
WHERE a.area= 'ZF15'

ただし、サブクエリは users テーブルから null 値を返します。ただし、制限と最大を削除すると、ユーザー テーブルの値は取得されますが、チーム コードごとに複数の行が取得されます。何か案は?

4

1 に答える 1

2

チームごとに最大(uniqid)でユーザーを参加させることで、これはうまくいくはずだと思います:

SELECT a.teamcode, a.area, 
   c.uniqid, CONCAT(c.first_name,  ' ', c.last_name ) AS fullname, c.email
FROM teams a
   LEFT JOIN (
      SELECT MAX(uniqid) maxuniqid, teamcode
      FROM users 
      GROUP BY teamcode
   ) u on a.teamcode = u.teamcode
   LEFT JOIN users c on c.teamcode = u.teamcode 
       AND c.uniqid = u.maxuniqid
WHERE a.area= 'ZF15'

これにより、チームコード (チームごとに 1 つ) でグループ化されたユーザー テーブルから最大 (uniqid) が取得されます。次に、users テーブルに再び参加して、そのユーザーの名前と電子メールを取得します。

于 2013-04-01T00:41:18.077 に答える