-2

我有 3 张桌子players positions players_national

我需要SELECT DISTINCT定位players_nationalplayer_positon 与players表相关联的位置。

我的表是这样的:

Players Table
-----------------------------------------------------------------------
| player_id         player_name     player_team     player_position   |
-----------------------------------------------------------------------
    1               KAKA                12              1
    2               Ronaldo             7               2
    3               Adriano             10              2



Positions Table
-------------------------------------------------------
| position_id         position_name                   |
-------------------------------------------------------
     1                  Midfield            
     2                  Forward         



Players_national Table
-------------------------------------------------------------------
| player_id             player_team         player_national_team  |
-------------------------------------------------------------------
     1                       12                         4
     2                       7                          4
     3                       19                         4

My Dream output is this
---------------------------------------------------
| player_national_team          position          |
---------------------------------------------------
          4                         1                           
          4                         2                           

我的查询是这样的:

SELECT DISTINCT players. * , positions. * , players_national. * 
FROM players
LEFT JOIN positions ON positions.position_id = players.player_position
LEFT JOIN players_national ON players_national.player_id = players.player_id
WHERE players_national.player_id = players.player_id AND players_national.player_national_team = 4
4

2 回答 2

1

如果您从每个表中选择所有内容,那么每一行都将是DISTINCT;您需要将您的SELECT条款限制在您想要成为的领域DISTINCT

SELECT DISTINCT positions.position_id, players_national.player_national_team
FROM            players
                LEFT JOIN positions ON positions.position_id = players.player_position
                LEFT JOIN players_national ON players_national.player_id = players.player_id
WHERE           players_national.player_id = players.player_id AND players_national.player_national_team = 4
于 2012-12-12T01:55:35.300 回答
0


桌面玩家上不同的 player_position,加入到桌面 player_national 的位置

SELECT 
  DISTINCT(players.player_position),
  players_national.player_national_team
FROM players INNER JOIN players_national;

结果:

+-----------------+----------------------+
| player_position | player_national_team |
+-----------------+----------------------+
|               1 |                    4 |
|               2 |                    4 |
+-----------------+----------------------+
2 rows in set
于 2012-12-12T02:13:27.983 回答