简体   繁体   English

MySQL 4到5查询转换-加入麻烦

[英]Mysql 4 to 5 query conversion - join headaches

If anyone can help me rewrite my query to work in mysql 5 I would be very grateful. 如果有人可以帮助我重写我的查询以在mysql 5中工作,我将不胜感激。 If anyone can provide links to solid, simple tutorials on how to rewrite old queries that would also be great. 如果有人可以提供指向有关如何重写旧查询的可靠简单教程的链接,那也将非常有用。

My current (version 4) query looks like this: 我当前的(第4版)查询如下所示:

SELECT
 course.course_code,
 course.course_title_sv AS course_title,
 course.course_u_credits,
 course.course_successive_level_scb_id,
 s.successive_level_scb_order,
 s.successive_level_scb_code,
 LEFT (education_level.edu_level_name_sv, 1) AS course_edu_level, course.course_level, 
 GROUP_CONCAT(DISTINCT h.head_area_hv_title_sv SEPARATOR ', ') AS head_area_hv
FROM
 course, course_event, course_event_package_links, package, education_level
LEFT JOIN
 course_has_head_area_hv ON(course.course_id = course_has_head_area_hv.course_id)
LEFT JOIN
 head_area_hv h ON(h.head_area_hv_id = course_has_head_area_hv.head_area_hv_id)
LEFT JOIN
 successive_level_scb s ON(s.successive_level_scb_id = course.course_successive_level_scb_id)
WHERE
 course.course_edu_level=education_level.edu_level_id AND
 course.course_id=course_event.course_id AND
 course_event.course_event_id=course_event_package_links.course_event_id AND
 course_event_package_links.package_id=package.package_id AND
 course.course_successive_level_scb_id != '' AND
 package.package_id='6318'
GROUP BY course.course_id

Simply replace 只需更换

SELECT ... 
FROM course, course_event, course_event_package_links
...
WHERE course.course_id=course_event.course_id 
AND course_event.course_event_id=course_event_package_links.course_event_id

by 通过

SELECT ...
FROM course
JOIN course_event ON course_event.course_id = course.course_id
JOIN course_event_package_links 
  ON course_event_package_links.course_event_id = course_event.course_event_id
...

About your error message, are you sure course.course_id exists? 关于您的错误消息,您确定course.course_id存在吗? Maybe it was replaced by course.course_code ? 也许它被course.course_code取代了?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM