【问题标题】:Left outer join to a generated table?左外连接到生成的表?
【发布时间】:2012-02-02 21:31:28
【问题描述】:

我完全走错了吗? 我想对从 2 个表生成的查询进行左外连接,但我不断收到错误。我需要不同的方法吗?

t1:

ID, Surname,Firstname

t2:

ID,JobNo,Confirmed

我有以下疑问:

SELECT JobNo AS N, StaffID AS P, Confirmed as C, 
       FirstName AS F,Surname AS S 
FROM gigs_players, Players 
WHERE t1.StaffID=t2.StaffID AND JobNo="2" 
      AND (`Confirmed` IS NULL OR Confirmed ='Y' ) 
ORDER BY Instrument,Surname

我要补充:

LEFT OUTER JOIN contacted (ON t1.StaffID=contact.ID AND t2.JobNo=contact.JobNo)"

我可以对从 2 个表生成的查询执行 left outer join 吗?

【问题讨论】:

  • 我无法理解你的问题。你能说得更准确点吗?
  • 当您执行“t1.StaffID=t2.StaffID”时,您暗示 t1 和 t2 是查询中的表,但它们不是。您的查询中指定的唯一表是“gigs_players”和“Players”。
  • 也许您需要对子查询进行左连接? link

标签: mysql join outer-join


【解决方案1】:

这是一个子查询的左连接示例。这可能就是您正在寻找的。​​p>

select 
parts.id, 
min(inv2.id) as nextFIFOitemid 
from test.parts 
left join 
( select 
  inventory.id, 
  coalesce(parts.id, 1) as partid 
  from test.inventory 
  left join test.parts 
  on (parts.id = inventory.partid) 
) inv2 
on (parts.id = inv2.partid) 
group by parts.id;

【讨论】:

    【解决方案2】:

    为了在要添加的左外连接中使用t1t2,您需要将它们与第一个表连接起来,您不能在左外连接中直接引用它们,有些东西像下面这样:

    SELECT JobNo AS N, StaffID AS P, Confirmed as C, 
       FirstName AS F,Surname AS S 
    FROM gigs_players, Players
    Inner join t1 on ...
    Inner join t2 on ...
    LEFT OUTER JOIN contacted c 
         on t1.StaffID=c.ID AND t2.JobNo = c.JobNo
    WHERE t1.StaffID=t2.StaffID AND JobNo="2" 
        AND (`Confirmed` IS NULL OR Confirmed ='Y' ) 
    ORDER BY Instrument,Surname
    

    因此,根据您的表结构,定义与t1t2 与其他表的两个连接的条件。

    【讨论】:

      猜你喜欢
      • 2017-08-19
      • 2014-02-24
      • 2014-03-21
      • 1970-01-01
      • 2011-09-20
      • 2011-10-01
      • 1970-01-01
      • 2012-02-01
      • 2011-10-30
      相关资源
      最近更新 更多