【发布时间】:2015-01-21 18:51:39
【问题描述】:
请看下面的查询..
SELECT Client_Portfolio.*,
Client.Name,
Provider.Name,
"One" AS Income_Type,
One.`One_Gross_Fee` AS "Gross_Fee",
One.`One_V_Fee` AS "V_Fee",
One.`One_E_Fee` AS "E_Fee",
One.`One_I_Fee` AS "I_Fee",
One.`One_Tax_Provision` AS "Tax_Provision",
One.`One_Net_Income` AS "Net_Income",
"N/A" AS VAT,
One.`Updated_Date`
FROM Client_Portfolio
INNER JOIN Portfolio ON Portfolio.`idPortfolio` = Client_Portfolio.`idPortfolio`
INNER JOIN Client ON Client.idClient = Client_Portfolio.idClient
JOIN Provider ON Provider.idProvider = Portfolio.idProvider
INNER JOIN One ON One.idPortfolio = Portfolio.idPortfolio
UNION
SELECT Client_Portfolio.*,
Client.Name,
Provider.Name,
"Two" AS Income_Type,
Two.`Two_Gross_Fee` AS "Gross_Fee",
Two.`Two_V_Fee` AS "V_Fee",
Two.`Two_E_Fee` AS "E_Fee",
Two.`Two_I_Fee` AS "I_Fee",
Two.`Two_Tax_Provision` AS "Tax_Provision",
Two.`Two_Net_Income` AS "Net_Income",
Two.`Two_Vat` AS VAT,
Two.`Updated_Date`
FROM Client_Portfolio
INNER JOIN Portfolio ON Portfolio.`idPortfolio` = Client_Portfolio.`idPortfolio`
INNER JOIN Client ON Client.idClient = Client_Portfolio.idClient
JOIN Provider ON Provider.idProvider = Portfolio.idProvider
INNER JOIN Two ON Two.idPortfolio = Portfolio.idPortfolio
UNION
SELECT
Three.`Date` AS 'Updated_Date',
Three.`Gross_Fee` AS 'Gross_Fee',
Three.`Three_E_Fee` AS 'E_Fee',
Three.`Three_Tax_Provision` AS 'Tax_Provision',
Three.`Three_Net_Income` AS 'Net_Income',
Three.`Three_Vat` AS 'VAT',
0.0 AS 'V_Fee',
0.0 AS 'I_Fee',
Client.Name AS 'Client_Name',
'Three' AS Income_Type,
Provider.Name AS 'Provider_Name'
FROM Three
INNER JOIN Three_Obs ON Three_Obs.`idThree_Obs` = Three.`idThree_Obs`
LEFT JOIN Client ON Three_Obs.`idClient` = Client.`idClient`
LEFT JOIN Provider ON Three_Obs.`idProvider` = Provider.`idProvider`
当我运行此查询时,我收到错误 The used SELECT statements have a different number of columns。这仅仅是因为最后一个查询,它没有SELECT Client_Portfolio.*。在Client_Portfolio 中有两列,idClient 和idPortfolio,我没有理由将它加入我的最后一个查询,因为它不是必需的。但是,我尝试加入 Three_Obs.idClient = Client_Portfolio.idClient 只是为了看看结果如何,结果完全无效。
那么我该如何解决这个问题呢?我在最后一个查询中不需要 Client_Portfolio.*,但我需要该查询是 UNION 和其他 2。
【问题讨论】:
-
我猜在最后一个查询中这个语句会产生问题
'Three' AS Income_Type,检查一次。这应该是Three.something -
对应的SELECT语句中出现的列数必须相等。出现在每个 SELECT 语句对应位置的列必须具有相同的数据类型或至少具有可转换的数据类型
标签: mysql sql database join union