الخلية العمود غير معروف
-
06-07-2019 - |
سؤال
ولدي الاستعلام التالي
SELECT
s.name,
s.surname,
s.id_nr,
s.student_nr,
s.createdate,
s.enddate,
(SELECT count(*) FROM Student_Attendance WHERE absent = 1) AS count_absent
FROM
Student AS s,
Student_Contact AS sc,
Student_Payment AS p,
Student_Courses AS scou,
Modules AS m,
Student_Certificate AS scer,
Student_Results AS sr,
Lecturer_Profile AS l,
Lecturer_Comments AS lc,
Student_Attendance AS sa,
Student_Training AS t
WHERE s.s_id = sc.s_id
AND s.s_id = p.s_id
AND s.s_id = scou.s_id
AND scou.c_id = m.c_id
AND s.s_id = scer.s_id
AND s.s_id = sr.s_id
AND s.s_id = lc.s_id
AND lc.l_id = l.l_id
AND s.s_id = sa.s_id
AND LOWER(s.name) = 'andile'
AND LOWER(s.surname) = ' orson vulture'
AND s.id_nr = 8403125062671
AND LOWER(sc.race) = 'white'
AND sc.gender = 1
AND LOWER(sc.area) = 'gauteng'
AND p.payment_type = 1
AND s.student_nr = 203087506
AND scou.c_id = 1 AND sc.age = 23
AND scer.certificate_number = 3424234
AND sr.result = 32
AND l.l_id= 1
AND count_absent = 3
AND LOWER(s.branch) = 'pretoria'
AND LOWER(s.campus_name) = 'pretoria'
AND LOWER(sc.kin_name) = 'self'
AND t.s_id = s.s_id
AND t.sp_id = 1
ووأحصل على الخطأ التالي
CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'count_absent' in 'where clause'
لا أعرف كيفية حل هذه منذ العمود في العبارة حدد
المحلول
ويتم معالجتها بك count_absent العمود مشتقة في جملة SELECT، والتي تتم معالجتها بعد جملة WHERE، وهكذا بالتالي فهي ليست متوفرة. وسيكون متاحا في حالة التفاف الاستعلام كله في SELECT الخارجي، لتكون قادرة على الوصول إلى عمود المشتقة منها.
وأي بمعنى.
select * from (
SELECT
s.name,
s.surname,
s.id_nr,
s.student_nr,
s.createdate,
s.enddate,
(SELECT count(*) FROM Student_Attendance WHERE absent = 1) AS count_absent
FROM
Student AS s,
Student_Contact AS sc,
Student_Payment AS p,
Student_Courses AS scou,
Modules AS m,
Student_Certificate AS scer,
Student_Results AS sr,
Lecturer_Profile AS l,
Lecturer_Comments AS lc,
Student_Attendance AS sa,
Student_Training AS t
WHERE s.s_id = sc.s_id
AND s.s_id = p.s_id
...
AND t.s_id = s.s_id
AND t.sp_id = 1
) as x where count_absent = 3
نصائح أخرى
ولست متأكدا ما كنت تحاول تحقيق هنا، ولكن لاحظ أن الاستعلام جزءا لا يتجزأ من أن يعطي count_absent يستخدم أي معايير أخرى غير "غائبة = 1". لذلك لا يهم أي طالب كنت تبحث في، سوف دائما الحصول على عدد من جميع السجلات student_attendance مع تغيب = 1. وأظن كنت تريد تحديد هذا student_attendance سجلات الطالب المحدد.
وأيضا، قد تحقق شرط "الانضمام". وهذا من شأنه الاستفسارات أسهل بكثير لجعل الشعور بعد ذلك النمط القديم الانضمام مع أين.