我有一个包含两个表Team
和User
的数据库。
每个团队可以有一个或两个用户。
我希望选择表 Team
的输出,以便包含表 User
中的两个用户的信息。
一旦我定义了表结构,它会更容易理解。
表团队
:
+-----------+-------------------+-------------------+-----------------+
| team_name | user_one | user_two | team_note |
+-----------+-------------------+-------------------+-----------------+
| Team one | skuhsa@jdds.dfd | kgihse@kdhf.dfj | one to twenty |
| Team two | dsjgknsz@djfd.fkg | | three to thirty |
+-----------+-------------------+-------------------+-----------------+
表用户
:
+-------------------+-----------+-----------------+
| email | user_name | user_note |
+-------------------+-----------+-----------------+
| skuhsa@jdds.dfd | skuhsaone | gimme money |
| kgihse@kdhf.dfj | kgihse | drop it |
| dsjgknsz@djfd.fkg | dsjgknsz | just eat it |
+-------------------+-----------+-----------------+
我正在寻找的输出是这样的。
+-----------+--------------------+-----------+------------------+-----------+-----------------+
| team_name | user_one | user_name | user_two | user_name | team_note |
+-----------+--------------------+-----------+------------------+-----------+-----------------+
| Team one | skuhsa@jdds.dfd | skuhsaone | kgihse@kdhf.dfj | kgihse | one to twenty |
+-----------+--------------------+-----------+------------------+-----------+-----------------+
| Team two | dsjgknsz@djfd.fkg | dsjgknsz | | | three to thirty |
+-----------+--------------------+-----------+------------------+-----------+-----------------+
我有一种很好的感觉,它可以轻松完成,但现在我正在尝试各种 JOIN 和东西,并以重复的结果或行结束。 如果有任何 PostgreSQL 特定的方法来做到这一点,我会很满意。
SELECT * FROM Team LEFT JOIN User ON Team.user_one=User.email
有效,但如何只选择我想要的列?即,它将如何区分第一个和第二个用户的黑白列?
最佳答案
一些 left join
应该可以解决问题:
SELECT team_name, user_one, u1.user_name, user_two, u2.user_name, team_note
FROM team t
LEFT JOIN user u1 ON t.user_one = u1.email
LEFT JOIN user u2 ON t.user_one = u2.email
关于sql - 使用 Join,从多个没有外键的 SQL 表中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35364875/