Объединение двух запросов - как? - PullRequest
2 голосов
/ 17 января 2012

У меня есть следующие запросы:

Запрос 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;

Как можно объединить эти 2 запроса, чтобы показать всезначения этих таблиц?Я хочу, чтобы объединение было на T10.C1 = T20.C1.

При попытке union я получаю предупреждение о том, что количество столбцов не совпадает, что верно, эти таблицы не совпадают


union

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]ОШИБКА: каждый запрос UNION должен иметь одинаковое количество столбцов


Когда я пытаюсь inner join, я получаю синтаксическую ошибку в inner

или рядом с ней * Есть ли способ присоединитьсяэти 2 запроса вместе?

1 Ответ

4 голосов
/ 17 января 2012

Это то, что вы хотите:

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 
"ProductConfig","Board","PcbBuild","Model","TcssCalib","ProductBuild","TxResultsLink","TxResults","DspValues"
where "Model"."idModel" = "PcbBuild"."Model" and "Board"."PcbBuild" = "PcbBuild"."idPcbBuild" 
and "Board"."idBoard" = "TcssCalib"."Board" and "ProductConfig"."TcssCalib" = "TcssCalib"."idTcssCalib" and "ProductBuild"."idProductBuild"
 = "TxResultsLink"."ProductBuild" and "TxResults"."idTxResults" = "TxResultsLink"."TxResults" 
and "TxResults"."DspValues" = "DspValues"."idDspValues"
and "ProductBuild"."ProductConfig" = "ProductConfig"."idProductConfig";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...