Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
Php 连接查询中的mysql选择列_Php_Mysql_Inner Join - Fatal编程技术网

Php 连接查询中的mysql选择列

Php 连接查询中的mysql选择列,php,mysql,inner-join,Php,Mysql,Inner Join,情景: 学生可以注册一个或多个班级 结构: 学生表有以下列:id、名字、姓氏、电子邮件、出生日期、年龄、性别、手机、地址 “类别”表有以下列:id、名称 student\u classes表包含以下列:student\u id、class\u id 现在,Iam通过内部联接查询联接3个表:学生、班级、学生班: select * from students inner join student_classes on students.id=student_classes.student_id

情景:

学生可以注册一个或多个班级

结构:

学生表有以下列:id、名字、姓氏、电子邮件、出生日期、年龄、性别、手机、地址

“类别”表有以下列:id、名称

student\u classes表包含以下列:student\u id、class\u id

现在,Iam通过内部联接查询联接3个表:学生、班级、学生班:

select *
from students inner join student_classes 
  on students.id=student_classes.student_id  inner join classes
  on student_classes.class_id=classes.id
但是我不想要学生表中的所有列。我只想知道名字。 如何修改联接查询?

将该列放在SELECT子句中,而不是*

如果仍然需要其他表中的列,也可以列出它们,或者使用tablename.*

尝试以下查询:

select students.firstname from ....

参考:

您可以这样做:

s  = students table
sc = student_classes
c  = classes
查询:

select 
    sc.student_id,
    s.firstname,
    s.lastname
from students s
inner join student_classes sc on sc.student_id = s.id
inner join classes c on c.id = sc.class_id

SELECT*通常被认为是一种不好的做法。仅选择所需的列。请参阅下面的答案。它只给出学生的名字,但我也需要其他表中的列。它工作得很好,只是我还必须在上面的select查询中包含c.name,才能同时获取学生的课程名称。我得到了我想要的,但现在我得到了行,这样一个特定的学生就有多行。我希望如此,因为这是一对多。例如:一行学生id为1和课程A,另一行学生id为1和课程B。是否可以将一个学生的所有课程放在一行中?目前,我没有任何其他选项,我正在运行另一个查询来获取学生的类,例如:从类中选择名称,其中id在选择类中\u id从学生中\u类中,其中student\u id=1是的,您可以添加,例如,其中s.student\u id=1,但由于这是一个一对多关系,您无法在一个查询中执行此操作。。如果您的服务器支持存储过程,您可以通过创建存储过程并循环其中的所有学生并搜索所有课程,在一次查询中完成此操作。。但是如果我能问你MySql的初学者,那么这有点超出你的知识范围:-也许是以后的解决方案?谢谢骗子的回答。。。如果你不介意的话,我很想知道这个案例的存储过程。。。你能提供一个提示吗?
s  = students table
sc = student_classes
c  = classes
select 
    sc.student_id,
    s.firstname,
    s.lastname
from students s
inner join student_classes sc on sc.student_id = s.id
inner join classes c on c.id = sc.class_id