Sql 如何组合两个查询?

Sql 如何组合两个查询?,sql,postgresql,Sql,Postgresql,我有以下疑问: 问题1: Select * from T10,T11,T12,T13,T14 where T10.C0 = T11.C0 and T11.C1 = T12.C0 and T12.C1 = T13.C0 and T13.C1 = T14.C0; 问题2: Select * from T20,T21,T22,T23,T24 where T20.C0 = T21.C0 and T21.C1 = T22.C0 and T22.C1 = T23.C0 and T23.C1 =

我有以下疑问:

问题1:

Select * from T10,T11,T12,T13,T14 
where T10.C0 = T11.C0 and T11.C1 = T12.C0 
and T12.C1 = T13.C0 and T13.C1 = T14.C0; 
问题2:

Select * from T20,T21,T22,T23,T24 
where T20.C0 = T21.C0 and T21.C1 = T22.C0 
and T22.C1 = T23.C0 and T23.C1 = T24.C0;
如何组合这两个查询以显示这些表的所有值?我希望联接在
T10.C1=T20.C1

在尝试联合时,我得到一个关于列数不相同的警告,这是真的,这些表是不同的


联合

Select * from 
"ProductConfig","Board","PcbBuild","Model","TcssCalib" 
where "Model"."idModel" = "PcbBuild"."Model" and "Board"."PcbBuild" = "PcbBuild"."idPcbBuild" 
and "Board"."idBoard" = "TcssCalib"."Board" and "ProductConfig"."TcssCalib" = "TcssCalib"."idTcssCalib"

union

Select * from"ProductBuild","TxResultsLink","TxResults","DspValues" where "ProductBuild"."idProductBuild"
 = "TxResultsLink"."ProductBuild" and "TxResults"."idTxResults" = "TxResultsLink"."TxResults" 
and "TxResults"."DspValues" = "DspValues"."idDspValues";
在这里,我希望ProductBuild.Productconfig与Productconfig.idProductConfig合并

给出一个错误:

[Err]错误:每个联合查询必须具有相同的列数


当我尝试
internaljoin
时,我在
internal

有没有办法将这两个查询连接在一起?

这就是您想要的:

Select * from T10,T11,T12,T13,T14,T20,T21,T22,T23,T24
where T10.C0 = T11.C0 and T11.C1 = T12.C0 
and T12.C1 = T13.C0 and T13.C1 = T14.C0
and T10.C1 = T20.C1 and T20.C0 = T21.C0 and T21.C1 = T22.C0 
and T22.C1 = T23.C0 and T23.C1 = T24.C0;

另一种更可读的方法是:

select * from T10
  inner join T11 on T10.C0 = T11.C0
  inner join T12 on T11.C1 = T12.C0 
  inner join T13 on T12.C1 = T13.C0 
  inner join T14 on T13.C1 = T14.C0
  inner join T20 on T10.C1 = T20.C1
  inner join T21 on T20.C0 = T21.C0
  inner join T22 on T21.C1 = T22.C0 
  inner join T23 on T22.C1 = T23.C0
  inner join T24 on T23.C1 = T24.C0;

要得到
UNION
,表中的列数必须相同,并且来自相同/可转换的数据类型

Select * from T10,T11,T12,T13,T14 
where T10.C0 = T11.C0 and T11.C1 = T12.C0 
and T12.C1 = T13.C0 and T13.C1 = T14.C0

UNION

Select * from T20,T21,T22,T23,T24 
where T20.C0 = T21.C0 and T21.C1 = T22.C0 
and T22.C1 = T23.C0 and T23.C1 = T24.C0;

这就是你想要的:

Select * from T10,T11,T12,T13,T14,T20,T21,T22,T23,T24
where T10.C0 = T11.C0 and T11.C1 = T12.C0 
and T12.C1 = T13.C0 and T13.C1 = T14.C0
and T10.C1 = T20.C1 and T20.C0 = T21.C0 and T21.C1 = T22.C0 
and T22.C1 = T23.C0 and T23.C1 = T24.C0;

另一种更具可读性的说法是:

select * from T10
  inner join T11 on T10.C0 = T11.C0
  inner join T12 on T11.C1 = T12.C0 
  inner join T13 on T12.C1 = T13.C0 
  inner join T14 on T13.C1 = T14.C0
  inner join T20 on T10.C1 = T20.C1
  inner join T21 on T20.C0 = T21.C0
  inner join T22 on T21.C1 = T22.C0 
  inner join T23 on T22.C1 = T23.C0
  inner join T24 on T23.C1 = T24.C0;

要得到
UNION
,表中的列数必须相同,并且来自相同/可转换的数据类型

Select * from T10,T11,T12,T13,T14 
where T10.C0 = T11.C0 and T11.C1 = T12.C0 
and T12.C1 = T13.C0 and T13.C1 = T14.C0

UNION

Select * from T20,T21,T22,T23,T24 
where T20.C0 = T21.C0 and T21.C1 = T22.C0 
and T22.C1 = T23.C0 and T23.C1 = T24.C0;


加入是最好的选择。发布您的加入查询代码,以便我们可以帮助调试它。此外,我希望这些是模糊的列名。是的,这些是“组合”的表名和列名(否则它们将变得不可读,我认为)连接是一种方法。发布您的加入查询代码,以便我们可以帮助调试它。此外,我希望这些是模糊的列名。是的,这些是“组合”的表名和列名(否则它们将变得不可读),这是我想要的,但我已经完成了我的2个查询(由C#构建)我想知道我是否可以轻松地加入这些查询。正确的方法是使用我指定的查询之一。我尝试了你的联合方法,但在我的案例中出现了一个错误(请参阅我编辑的问题)@Moonlight如何将一个查询与另一个查询连接?ProductBuild.ProductConfig与ProductConfig.IDProductConfig连接这是我想要的,但我已经完成了两个查询(由C#构建)我想知道是否可以轻松地加入这些查询。正确的方法是使用我指定的查询之一。我尝试了您的联合方法,但在我的案例中出现了一个错误(请参见我编辑的问题)@Moonlight如何将一个查询与另一个查询连接?ProductBuild.ProductConfig与ProductConfig.idProductConfig连接