2013-10-28 42 views
-2

我正在写数据库视图中两次使用同一列的sql查询。在SQL查询中使用同一列两次

这里是我的查询:

SELECT ElectricityMachinePanelDetails.MachineDescription AS "Machine Name", 
     ReadingValue AS "Last Day Meter Reading" 
FROM ElectricityDailyMeterReadingDetails 
INNER JOIN ElectricityMachinePanelDetails ON ElectricityMachinePanelDetails.MachinePanelID = ElectricityDailyMeterReadingDetails.MachinePanelID 
INNER JOIN ReadingTypesDetails ON ElectricityDailyMeterReadingDetails.ReadingTypeID = ReadingTypesDetails.ReadingTypeID 
WHERE ReadingCategoryID = 'RC001' AND 
     ReadingTypesDetails.ReadingTypeID = 'RT001' 

我怎样才能在DataGrid中使用的列名ReadingValue两次。

回答

0

如果datagridview允许doublename im不确定,那么您可以只使用它两次。否则,只需给它另一个名字“Last Day Meter Reading Copy”。

Select 
ElectricityMachinePanelDetails.MachineDescription AS "Machine Name", 
ReadingValue AS "Last Day Meter Reading", 
ReadingValue AS "Last Day Meter Copy" 
from ElectricityDailyMeterReadingDetails 
INNER JOIN ElectricityMachinePanelDetails on ElectricityMachinePanelDetails.MachinePanelID = ElectricityDailyMeterReadingDetails.MachinePanelID 
INNER JOIN ReadingTypesDetails ON ElectricityDailyMeterReadingDetails.ReadingTypeID = ReadingTypesDetails.ReadingTypeID where ReadingCategoryID = 'RC001' AND ReadingTypesDetails.ReadingTypeID = 'RT001' 

在MSSQL中你不能有两次相同的列名我想。但在MySQL中很好。

1

首先,在连接中使用别名而不是表名。所以你的查询可以更具可读性。

select 
    empd.MachineDescription as "Machine Name", 
    rtd.ReadingValue AS "Last Day Meter Reading" 
from ElectricityDailyMeterReadingDetails as edmrd 
    inner join ElectricityMachinePanelDetails as empd on empd.MachinePanelID = edmrd.MachinePanelID 
    inner join ReadingTypesDetails as rtd on rtd.ReadingTypeID = edmrd.ReadingTypeID 
where 
    rtd.ReadingCategoryID = 'RC001' and 
    rtd.ReadingTypesDetails.ReadingTypeID = 'RT001' 

如果你想加入ReadingTypesDetails两次,你可以很容易地做到这一点:

select 
    empd.MachineDescription as "Machine Name", 
    rtd.ReadingValue as "Last Day Meter Reading", 
    rtd2.ReadingValue as "Another Reading" 
from ElectricityDailyMeterReadingDetails as edmrd 
    inner join ElectricityMachinePanelDetails as empd on empd.MachinePanelID = edmrd.MachinePanelID 
    inner join ReadingTypesDetails as rtd on rtd.ReadingTypeID = edmrd.ReadingTypeID 
    inner join ReadingTypesDetails as rtd2 on rtd2.ReadingTypeID = edmrd.ReadingTypeID 
where 
    rtd.ReadingCategoryID = 'RC001' and 
    rtd.ReadingTypesDetails.ReadingTypeID = 'RT001' and 
    --rtd2.ReadingCategoryID = '????' and 
    --rtd2.ReadingTypesDetails.ReadingTypeID = '????' and 
+0

它不需要加入表的两倍。可以简单地使用rtd.ReadingValue两次。 –

+1

@KayNelson我假设OP知道如何使用同一个表中的值两次,但不知道如何连接两次同一个表。不知道为什么他需要两次绝对相同的价值。 –