在视图上使用SELECT时,“没有此类列”错误

时间:2016-06-15 06:38:07

标签: c++ sql sqlite

CREATE VIEW [0_NumOfCode] AS
    SELECT tbDeviceId.deviceId,
           count(DISTINCT tbCodeList_AV.codeNum) AS NumCode
      FROM tbDeviceId
           INNER JOIN
           tbCodeList_AV ON tbDeviceId.deviceId = tbCodeList_AV.deviceId
     GROUP BY tbDeviceId.deviceID
    UNION
    SELECT tbDeviceId.deviceID,
           count(DISTINCT tbCodelist_AC.codeNum) 
      FROM tbDeviceId
           INNER JOIN
           tbCodelist_AC ON tbDeviceId.deviceId = tbCodelist_AC.deviceId
     GROUP BY tbDeviceId.DeviceID;

上下文:我实际上是在创建一个使用SQLite并输入.db文件的C ++程序,所以我在这里给出的这个SQL代码(来自db文件)不是我的,我不喜欢我认为我应该(或者应该)改变它,但我面临着一个令人困惑的问题,这就是我提出这个问题的原因。

基本上,现在我想要选择此0_NumOfCode视图的deviceId列,但是我该怎么做? 既不

SELECT tbDeviceId.deviceId FROM [0_NumOfCode]

,也不

SELECT deviceId FROM [0_NumofCode]

也不是

SELECT [0_NumOfCode].deviceId FROM [0_NumOfCode]

完成了工作(“没有这样的列”错误)。但是,当我选择*时,列和数据确实显示在tbDeviceId.deviceID

现在,我 THINK 列的别名可能会解决问题,但就像我说的那样,我认为我不应该更改SQL代码。所以

1)鉴于此SQL代码,我该怎么做?

2)(为了我自己的好奇心)别名也会解决它,对吗?

更新:我的初步问题已经解决(在评论中),虽然我仍然对它的工作原理感到失望('vs`与没有引号)。

另外,我面临一个新问题:

SELECT tbdeviceid.DeviceID,
       numcode,
       numbrand,
       devicename15,
       devicename30,
       comment,
       devicenameCN
  FROM tbdeviceid
       INNER JOIN
       [0_NumofBrand] ON tbdeviceid.deviceId = [0_NumofBrand].deviceId
       INNER JOIN
       [0_numofcode] ON tbdeviceid.deviceId = [0_numofcode].deviceId

最后一行给出了没有这样的列错误。我如何代表专栏?

1 个答案:

答案 0 :(得分:1)

我想这会有用..
使用别名修改视图。

SELECT tbDeviceId.deviceId as dId, ...

然后使用该别名

的select语句
Select dId from [0_NumOfCode]