SQL查询:将一个表中的2列与另一个表中的1列联接(或选择)在一个视图中,而不包含额外的联接列

SQL查询:将一个表中的2列与另一个表中的1列联接(或选择)在一个视图中,而不包含额外的联接列,sql,join,select,view,Sql,Join,Select,View,这是我的第一篇Stackoverflow帖子,如果我的问题格式不正确,我深表歉意。我确信这是一个简单的问题,我的头撞在墙上。我有一个包含大量事件信息的表,大约有10列: 表:事件信息 date location_id lead_user_id colead_user_id attendees start end <and a few more...> ------------------------------------------------

这是我的第一篇Stackoverflow帖子,如果我的问题格式不正确,我深表歉意。我确信这是一个简单的问题,我的头撞在墙上。我有一个包含大量事件信息的表,大约有10列:

表:事件信息

date        location_id   lead_user_id   colead_user_id   attendees   start   end   <and a few more...>
------------------------------------------------------------------------------------------------
2020-10-10       1           3             1                  26       2100    2200     .
2020-10-11       3           2             4                  18       0600    0700
2020-10-12       2           5             6                  6        0800    0900
我想创建一个只包含信息子集的视图,而不包含完整的表联接。事件表
lead\u user\u id
colead\u user\u id
列均指
users
表中的
user\u id

我想创建如下视图:

date         Location      Lead Name      CoLead Name     attendees
---------------------------------------------------------------------
2020-10-10      1           Jack U          Joe S           26
2020-10-11      3           John T          Jim V           18
2020-10-12      2           Joy W           George A        6
我已经尝试了以下几次迭代,但都没有成功

SELECT 
    E.date, E.location, 
    U1.display_name AS Lead Name, 
    U2.display_name AS CoLead Name. 
    E.attendees
FROM
    users U1, event_info E
INNER JOIN 
    event_info E ON U1.user_id = E.lead_user_id
INNER JOIN 
    users U2 ON U2.user_id = E.colead_user_id
我感到恐惧

您的SQL语法有错误


信息。我并不感到惊讶,因为我实际上只在单列或嵌套select语句上使用过联接。。。这两列指向其中一列的文字让我感到困惑。救命啊

对这件事的正确查询

SELECT 
    E.date, E.location, 
    U1.display_name AS Lead Name, 
    (select display_name from users  where user_id=E.colead_user_id) AS CoLead Name, 
    E.attendees
FROM
    event_info E
INNER JOIN 
     users U1 ON U1.user_id = E.lead_user_id

请在代码问题中给出一个--cut&paste&runnable代码,包括作为代码输入的最小代表性示例;期望和实际输出(包括逐字记录错误消息);标签和版本;清晰的说明和解释。尽可能少地给出代码,即显示为OK的代码,并通过显示为not OK的代码进行扩展。(调试基础。)用于包含DBMS和DDL(包括约束和索引)的SQL,并以表格式作为代码输入。暂停总体目标的工作,将代码切碎到第一个表达式,没有给出您期望的内容&说出您期望的内容&为什么。PS您有语法错误。阅读语法和手册。显示组成子表达式是正确的。当固定下来,这将是一个常见问题解答。在考虑发帖之前,请先阅读您的课本和/或手册,并在谷歌上搜索任何错误消息或您的问题/问题/目标的许多清晰、简洁和准确的措辞,包括或不包括您的特定字符串/名称和网站:stackoverflow.com&tags;阅读许多答案。反思你的研究。请参见文本上方的投票箭头(&S)。如果你发布一个问题,请使用一个短语作为标题。你使用同一别名两次,例如逗号可能重复表示交叉连接,但优先级低于关键字连接。因此,首先完成上的连接&逗号的左表在那里是未知的。所以不要把逗号和关键字连接混在一起。(如果你砍掉你的代码,你会得到c上的select*from u1,ea join eb。现在看一下副本的标题。)-在ANSI-92 SQL标准(25年前)中,旧样式的逗号分隔表样式被正确的ANSI
join
语法所取代,不鼓励使用它。混合使用这两种风格——用逗号将两个表从中分隔开来,而将两个更合适的
连接起来,这确实是一种糟糕透顶的做法!谢谢你@Iman。我大大简化了我上面的示例问题,但您的回答正好提供了我需要解决的问题。您的wellcom,请单击“真实答案”图标
SELECT 
    E.date, E.location, 
    U1.display_name AS Lead Name, 
    (select display_name from users  where user_id=E.colead_user_id) AS CoLead Name, 
    E.attendees
FROM
    event_info E
INNER JOIN 
     users U1 ON U1.user_id = E.lead_user_id