0

我正在尝试从 mysql 数据库中提取学生和他们注册的课程。我想用输出中的课程名称替换课程 ID。

我有这些表和列:

表:users_to_courses 列:users_LOGINcourses_ID

表:users 列:loginnamesurname

表:courses 列:idname

这些表在以下方面联系在一起:

users_to_courses.users_LOGIN = users.login 
users_to_courses.courses_ID = courses.id

我正在尝试获取姓氏、姓名、课程(按姓名而不是 id)的输出,因此它看起来像 Smith、John Chemistry、Physics、Composition

这是我尝试失败的方法:

SELECT
users.surname,
users.name,
users.login,
users_to_courses.users_LOGIN,
(select group_concat (courses.name) from courses
where users_to_courses.users_LOGIN = users.login and users_to_courses.courses_ID =    
courses.id
GROUP BY users.surname) as courses
from courses join users_to_courses
on courses.id = users_to_courses.courses_ID
4

3 回答 3

1
SELECT users.login, users.surname, users.name, courses.name
FROM users_to_courses
INNER JOIN users ON users_to_courses.users_LOGIN = users.login
INNER JOIN courses ON users_to_courses.courses_ID = courses.id
GROUP BY users_to_courses.users_LOGIN

users_to_courses 表是如何组织的并不完全清楚,如果它是每行条目一个类,那么你将最终每类一个行,但是对应于相同用户 ID 的所有行在表中都是连续的。 .

如果 users_to_courses.courses_ID 条目是多个课程 ID 的列表,这可能不起作用...

于 2012-10-14T19:55:04.497 回答
0
 SELECT users.surname, users.name, users.login, users_to_courses.users_LOGIN from courses c 
 INNER JOIN users_to_courses uc ON  uc.courses_ID = c.id
 INNER JOIN login l ON uc.users_login = l.login
于 2012-10-14T19:34:23.257 回答
0

试试这个

Select

    u.surname,
    u.name,
    u.login,
    uc.users_LOGIN,
    c.Name,

    --added this line
    group_concat (c.name)  
From users_to_courses uc
JOIN users u ON uc.users_LOGIN = u.login 
JOIN courses c ON uc.courses_ID = c.id

-- added this line
GROUP BY u.surname, u.name, u.login, uc.users_LOGIN
于 2012-10-14T19:34:52.337 回答