Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql用一个列值替换另一个列值_Mysql - Fatal编程技术网

mysql用一个列值替换另一个列值

mysql用一个列值替换另一个列值,mysql,Mysql,我试图从mysql数据库中提取学生和他们注册的课程。我想用输出中的课程名称替换课程id 我有以下表格和列: 表:用户到课程 列:users\u LOGIN和courses\u ID 表:用户 列:登录,姓名和姓氏 表:课程 列:id和name 这些表格在以下方面相互关联: users_to_courses.users_LOGIN = users.login users_to_courses.courses_ID = courses.id 我正试图获得姓氏、姓名、课程(按姓名而不是id)的输出

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

我有以下表格和列:

表:
用户到课程
列:
users\u LOGIN
courses\u ID

表:
用户
列:
登录
姓名
姓氏

表:
课程
列:
id
name

这些表格在以下方面相互关联:

users_to_courses.users_LOGIN = users.login 
users_to_courses.courses_ID = courses.id
我正试图获得姓氏、姓名、课程(按姓名而不是id)的输出,所以它看起来像史密斯、约翰、化学、物理、作文

以下是我尝试失败的地方:

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
试试这个

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
还不完全清楚users_to_courses表是如何组织的,如果它是每行一个类的条目,那么您最终会得到每类一行,但是与相同用户ID对应的所有行在表中都是连续的


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

这会产生此错误:#1146-表'gulllake_efront.login'不存在当我将c.CourseName更改为c.name时,此项起作用。我仍然希望所有课程都按姓氏分组。是否可以将组_concat添加到此查询?这给了我#1630-函数gulllake_efront.group_concat不存在。检查参考中的“函数名解析和解析”部分Manual@user1731399虽然我不认为这与答案有关,但我已经更新了我的答案,将
组的
行中的
courses.name
替换为
c.name
,这也不起作用,但这提供了我需要的数据,即使它不是分组在一行中。
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
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