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
最后一行给出了没有这样的列错误。我如何代表专栏?
答案 0 :(得分:1)
我想这会有用..
使用别名修改视图。
SELECT tbDeviceId.deviceId as dId, ...
然后使用该别名
的select语句Select dId from [0_NumOfCode]