0

生徒と、生徒が登録しているコースを mysql データベースから取得しようとしています。出力のコースIDをコース名に置き換えたい。

私はこれらのテーブルと列を持っています:

表:users_to_courses 列:users_LOGINおよびcourses_ID

表:users 列: loginnameおよびsurname

表:courses 列:idおよびname

これらの表は、次の点で結び付けられています。

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テーブルがどのように編成されているかは完全には明確ではありません。行エントリごとに1つのクラスの場合、クラスごとに1つの行になりますが、同じユーザーIDに対応するすべての行がテーブル内で連続します。 。

users_to_courses.courses_IDエントリが複数のコースIDのリストである場合、これは機能しない可能性があります...

于 2012-10-14T19:55:04.497 に答える
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 に答える
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 に答える