如何将MySQL查询转换为CodeIgniter语法?

问题描述 投票:-1回答:1

我目前正在处理MySQL查询。当它已经提供了正确的所需数据时,我发现需要将其转换为CodeIgniter语法,以便能够在GroceryCRUD的自定义模型中使用它。我尝试手动输入所有选择,联接以及每个合适的语句的值

(e.g. $this->db->select("tul1.u_Uname AS MSN, and so on...) 

但是它不起作用。我也尝试使用

$this->db->query(and my query goes here)

我的代码运行正常,但GroceryCRUD无法显示字段。我尝试运行遵循默认语法的简单查询

(e.g $this->db->select("fgrade_Id, CONCAT_WS ( ' ', tbluserlist.u_LastName, tbluserlist.u_FirstName ) AS Student", false); 

并且能够显示结果,但是我未能成功转换所需的实际查询。我正在处理的实际查询是:

SELECT tul1.u_Uname AS MSN, REPLACE(CONCAT_WS(' ',  CONCAT_WS('',tul1.u_LastName, ','),  IF (tul1.u_SuffixName = 'NONE' OR tul1.u_SuffixName LIKE '%n/a%' OR tul1.u_SuffixName LIKE '%n\\a%', CONCAT_WS('',tul1.u_FirstName, ','), tul1.u_FirstName), IF (tul1.u_SuffixName = 'NONE' OR tul1.u_SuffixName LIKE '%n/a%' OR tul1.u_SuffixName LIKE '%n\\a%', '',  CONCAT_WS('', tul1.u_SuffixName, ',')), IF (tul1.u_MiddleName = 'NONE' OR tul1.u_MiddleName LIKE '%n/a%' OR tul1.u_SuffixName LIKE '%n\\a%', '',  tul1.u_MiddleName)), '  ', ' ') AS Student, CONCAT_WS(' ',  sc.course_RefNo, '~',  sc.course_Title) AS Course, REPLACE(CONCAT_WS(' ',  CONCAT_WS('',tul2.u_LastName, ','),  IF (tul2.u_SuffixName = 'NONE' OR tul2.u_SuffixName LIKE '%n/a%' OR tul2.u_SuffixName LIKE '%n\\a%', CONCAT_WS('',tul2.u_FirstName, ','), tul2.u_FirstName), IF (tul2.u_SuffixName = 'NONE' OR tul2.u_SuffixName LIKE '%n/a%' OR tul2.u_SuffixName LIKE '%n\\a%', '',  CONCAT_WS('', tul2.u_SuffixName, ',')), IF (tul2.u_MiddleName = 'NONE' OR tul2.u_MiddleName LIKE '%n/a%' OR tul2.u_SuffixName LIKE '%n\\a%', '',  tul2.u_MiddleName)), '  ', ' ') AS Instructor, tfg.fgrade_Grade AS FinalGrade, tfl.fl_AY AS AY, tfl.fl_SemId AS SemId, ss.yrsem_Sem AS Semester, tfg.fgrade_DateEncoded, tfg.fgrade_Visible, tfg.fgrade_Id FROM egmsdbdev.tblfinalgrade AS tfg INNER JOIN egmsdbdev.tblfacultyloading AS tfl ON tfg.fgrade_FLId = tfl.fl_Id INNER JOIN egmsdbdev.tbluserlist AS tul1 ON tul1.u_SpId = tfg.fgrade_SpId INNER JOIN egmsdbdev.set_course AS sc ON tfl.fl_CourseId = sc.course_Id INNER JOIN egmsdbdev.tbluserlist AS tul2 ON tfl.fl_FacultyId = tul2.u_Id INNER JOIN dbris.set_yrsem AS ss ON tfl.fl_SemId = ss.yrsem_id LEFT JOIN egmsdbdev.tblfinalgrade tfg2 ON (tfg.fgrade_SpId = tfg2.fgrade_SpId AND tfg.fgrade_FLId = tfg2.fgrade_FLId AND tfg.fgrade_Id<tfg2.fgrade_Id ) WHERE tfl.fl_CourseId NOT IN ((SELECT nnc_CourseId from set_nonnumericcourse)) AND tfg2.fgrade_Id IS NULL ORDER BY Student, Course

谢谢您的帮助。

mysql codeigniter syntax
1个回答
0
投票

调试之前,我有几个问题。

  1. 您是否曾在像MySQL sv,phpmyadmin等的RDBMS中尝试过MySQL查询?如果您还没有,请先在此处进行操作以查看其是否有效,然后在代码上复制/粘贴。
  2. CodeIgniter documentation for Query Builder中,您需要执行$this->db->select('title, content, date'); $query = $this->db->get('mytable');,根据我在帖子中看到的内容,您仅尝试了第一部分,而未指定要使用的表。
  3. [请尝试为您的问题提供更好的格式,该查询可以以更好的方式显示,只需在诸如REPLACE之类的关键字上按SHIFT + ENTER键,也可以用逗号分隔,然后使用该格式选择所有文本并单击{},这将为文本提供代码格式。
  4. [如果您尝试使用MySQL查询语法的方法,我建议您采用以下方法:$query = "Your query"; echo $query;,那么您将能够更轻松地对查询进行调试,如果将其与我列出的1项结合使用,效果会更好(尝试对类似phpmyadmin的程序进行查询)。有时由于缺少'',“”,逗号等原因,我的查询无法正常工作;如果使用echo,我可以在执行实际查询之前先查看查询的运行方式。
© www.soinside.com 2019 - 2024. All rights reserved.