从MySql移植到SQLite代码后,VIEW创建无法正常工作

时间:2014-07-30 13:21:22

标签: mysql sql sqlite view

我正在移植一个应用程序并决定在SQLite中以镜面方式移植它的数据库。 所有表格都运行良好,但以下视图:

VIEW `view_type_questions` AS 
select `questions`.`id` AS `id_question`,
      `type_modules`.`id` AS `id_type`,
      `type_modules`.`description` AS `type_questions`
from (`questions` left join (`modules` left join `type_modules`
 on((`modules`.`id_type` = `type_modules`.`id`)))
 on((`questions`.`id_module` = `modules`.`id`)))  

我以相同的方式翻译而没有顶点('):

 VIEW view_type_questions AS select questions.id AS
 id_question,type_modules.id AS
 id_type,type_modules.description AS type_questions
 from (questions left join (modules left join type_modules
 on((modules.id_type = type_modules.id)))
 on((questions.id_module = modules.id)))  

给了我一个奇怪的错误,因为当我尝试执行此查询时,我得到以下内容:

处理SQL时出错:无法准备语句(1没有这样的列:type_modules.id)

(我100%确定所有的表都包含type_modules)

  1. 有进一步调查的方法吗?
  2. 创建视图有什么不同吗? 在mysql和sqlite之间?

1 个答案:

答案 0 :(得分:1)

当您在连接周围使用多余的括号时,某些SQLite版本会出现问题。 只需删除它们(为了Zarquon的缘故,正确格式化查询):

CREATE VIEW view_type_questions AS
SELECT questions.id AS id_question,
       type_modules.id AS id_type,
       type_modules.description AS type_questions
FROM questions
LEFT JOIN modules ON questions.id_module = modules.id
LEFT JOIN type_modules ON modules.id_type = type_modules.id