如何将SQL Server查询转换为等效的SQLite查询?

如何将SQL Server查询转换为等效的SQLite查询?,sql,sql-server,sqlite,Sql,Sql Server,Sqlite,我有一个在SQL server中工作的查询: SELECT T_Cbt.cbtName, T_HDD.hddName, T_HDD.ip, T_HDD.compName, T_Cbt.mobRack, T_HDD.size, T_OS.osName + ' ' + T_OS.osVersion + ' - ' + T_OS.osLanguage AS Expr1, T_OS.osBit, T_SWList.swName + ' ' + T_SWDetai

我有一个在SQL server中工作的查询:

SELECT 
  T_Cbt.cbtName,
  T_HDD.hddName,
  T_HDD.ip,
  T_HDD.compName,
  T_Cbt.mobRack,
  T_HDD.size, 
  T_OS.osName + ' ' + T_OS.osVersion + ' - ' + T_OS.osLanguage AS Expr1,
  T_OS.osBit, 
  T_SWList.swName + ' ' + T_SWDetails.swVersion + ' - ' + T_SWDetails.swLang + ' ' + T_SWDetails.swArch AS Expr2
FROM T_OS INNER JOIN
  T_Cbt INNER JOIN
  T_HDD ON T_Cbt.cbtId = T_HDD.cbtId ON T_OS.id = T_HDD.osId INNER JOIN
  T_Division ON T_HDD.division = T_Division.divId LEFT OUTER JOIN
  T_SWDetails INNER JOIN
  T_SW ON T_SWDetails.sdPk = T_SW.swdid INNER JOIN
  T_SWList ON T_SWDetails.swdId = T_SWList.swId ON T_HDD.hddid = T_SW.hddid
WHERE T_Cbt.cbtName <> 'FREE'
ORDER BY T_Cbt.purpose
选择
T_Cbt.cbtName,
T_HDD.hddName,
T_HDD.ip,
T_HDD.compName,
T_Cbt.mobRack,
T_硬盘尺寸,
T_OS.osName+''+T_OS.osVersion+'-'+T_OS.osLanguage作为Expr1,
奥斯比特,
T_SWList.swName+''+T_SWDetails.swVersion+'-'+T_SWDetails.swLang+''+T_SWDetails.swrach作为Expr2
从T_OS内部连接
T_Cbt内连接
T_HDD ON T_Cbt.cbtId=T_HDD.cbtId ON T_OS.id=T_HDD.osId内部联接
T_HDD.Division上的T_Division=T_Division.divId左外连接
T\u内部连接
T_SWDetails.sdPk=T_SW.swdid内部连接上的T_SW
T_SWDetails上的T_SWList.swdId=T_HDD上的T_SWList.swId.hddid=T_SW.hddid
其中T_Cbt.cbtName“FREE”
按目的订购

当我在Sqlite中执行此查询时,我在执行query:near“ON”时收到类似于
error的错误:语法错误
如何修复它?

Sqlite不允许嵌套
JOIN
ON
。重新排序您的
JOIN
s,使其不使用嵌套应该允许查询顺利执行

SELECT 
  T_Cbt.cbtName, T_HDD.hddName, T_HDD.ip, T_HDD.compName, 
  T_Cbt.mobRack, T_HDD.size, 
  T_OS.osName || ' ' || T_OS.osVersion || ' - ' || T_OS.osLanguage AS Expr1,
  T_OS.osBit, T_SWList.swName || ' ' || T_SWDetails.swVersion || ' - ' ||
  T_SWDetails.swLang || ' ' || T_SWDetails.swArch AS Expr2
FROM T_OS 
INNER JOIN T_HDD ON T_OS.id = T_HDD.osId 
INNER JOIN T_Cbt ON T_Cbt.cbtId = T_HDD.cbtId   
INNER JOIN T_Division ON T_HDD.division = T_Division.divId 
INNER JOIN T_SW ON T_HDD.hddid = T_SW.hddid
LEFT OUTER JOIN T_SWDetails ON T_SWDetails.sdPk = T_SW.swdid 
INNER JOIN T_SWList ON T_SWDetails.swdId = T_SWList.swId 
WHERE (T_Cbt.cbtName <> 'FREE')
ORDER BY T_Cbt.purpose
选择
T_Cbt.cbtName、T_HDD.hddName、T_HDD.ip、T_HDD.compName、,
T_Cbt.mobRack,T_HDD.size,
T|OS.osName | | | | T| OS.osVersion | | | | | T| OS.osLanguage作为Expr1,
T|OS.osBit,T|SWList.swName | | |“T|SWDetails.swVersion | |”||
T|SWDetails.swLang||T|SWDetails.swArch AS Expr2
托斯
T_OS.id=T_HDD.osId上的内部连接T_HDD
T_Cbt.cbtId=T_HDD.cbtId上的内部连接T_Cbt
T_硬盘上的内部连接T_分区。分区=T_分区。分区ID
T_硬盘上的内部连接T_SW.hddid=T_SW.hddid
T_SWDetails.sdPk=T_SW.swdid上的左外连接T_SWDetails
T_SWDetails.swdId=T_SWList.swId上的内部联接T_SWList
其中(T_Cbt.cbtName“FREE”)
按目的订购

加入中的问题。您必须在内部联接tablename之后使用@DH_uuu,但它在SQL Server中工作。如何将其转换为sqlite。我不知道。Bcoz我是SQLITE新手,我不知道它在sql server上是如何运行的。这两种编程方式都是完全错误的。对不起,我得到的答案是| |是在SQLITE not+@Sam1604中附加字符串。啊,是的,对不起,没有任何数据可供测试,所以错过了。你能帮我解决这个问题吗。