【问题标题】:View a query from the mysql by join [duplicate]通过join查看来自mysql的查询[重复]
【发布时间】:2022-01-20 22:13:57
【问题描述】:

我的日程安排中有员工休假部分。

它的表Vacation的结构如下

存储在用户 ID 的发送者和替换部分中

id sender Substitute
1 5 6

我想连接到用户表并提取数字ID在表中的用户

这是我的用户表的结构

id username fullname
5 jhon jhon smith
6 karen karen smith

现在我想在经理部分显示假期表中所有假期的列表以及发送者和继任者的全名

vacationId sender Fullname Substitute Fullname
1 jhon smith karen smith

我该怎么做?

我正在使用以下查询,但我对如何显示有疑问

SELECT * 
FROM vacation 
LEFT OUTER JOIN user ON vacation.sender=user.user_id AND vacation.Substitute=user.user_id

【问题讨论】:

  • 您需要 2 个连接,一个用于发送者,一个用于替代。
  • @P.Salmon 你能举个例子吗?
  • @P.Salmon 执行此操作时会打印错误
  • 显示您的代码和完整的错误消息或发布到小提琴。
  • @P.Salmon我把它贴在了底部

标签: php mysql


【解决方案1】:

您的查询包含的列可能在您引用的多个表中以相同的名称出现,因此出现非唯一错误。最好在加入时明确引用和/或使用表aliases。此外,您提到了不存在的user_id

试试这个:

SELECT 
    v.id as vacationID, 
    u1.fullname as sender_Fullname, 
    u2.fullname as substitute_Fullname 
FROM vacation  as v
LEFT OUTER JOIN users as u1 ON v.sender=u1.id 
LEFT OUTER JOIN users as u2 ON v.Substitute=u2.id

db<>fiddle

中查看演示

【讨论】:

  • 非常感谢,这对我有用,但是假期表中存在另一个问题,我还有一系列其他信息,例如注册时间和结束时间,如何显示它们。
  • @Alfa 如果答案解决了您的问题,您应该标记为接受。您可以在不在 cmets 部分的问题中发布另一个问题或添加问题的所有信息
  • 将它们添加到您的 SELECT 语句中。像这样:dbfiddle.uk/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
相关资源
最近更新 更多