我目前正在处理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
谢谢您的帮助。
调试之前,我有几个问题。
$this->db->select('title, content, date');
$query = $this->db->get('mytable');
,根据我在帖子中看到的内容,您仅尝试了第一部分,而未指定要使用的表。$query = "Your query";
echo $query;
,那么您将能够更轻松地对查询进行调试,如果将其与我列出的1项结合使用,效果会更好(尝试对类似phpmyadmin的程序进行查询)。有时由于缺少'',“”,逗号等原因,我的查询无法正常工作;如果使用echo,我可以在执行实际查询之前先查看查询的运行方式。