Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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_Select_Multiple Tables - Fatal编程技术网

Mysql 如何从多个表中选择数据?

Mysql 如何从多个表中选择数据?,mysql,select,multiple-tables,Mysql,Select,Multiple Tables,我有4个表格,我对选择数据感到非常困惑 我的4个表中有这些字段 t1 -> student_id given_name user_name t2 -> school_year sem class student_id main_id t3 -> subject_id main_id t4 -> subject_id subject_name 我需要选择(给定名称、主题名称、类和主id)。怎么做 我试着这样做 SELECT t2.sc

我有4个表格,我对选择数据感到非常困惑

我的4个表中有这些字段

t1 -> student_id
  given_name
  user_name

t2 -> school_year
  sem
  class
  student_id
  main_id

t3 -> subject_id
  main_id

t4 -> subject_id
  subject_name
我需要选择(给定名称、主题名称、类和主id)。怎么做

我试着这样做

SELECT t2.school_year, t2.rp_main_sem, t2.rp_main_class,  t4.name, t4.subject_id, t1.given_name, t1.user_name FROM t1, t2, t3, t4 WHERE t2.school_year = 2011 AND t2.sem = 1 AND t2.class = 'ES3A' AND t3.subject_id = t4.subject_id AND t1.student_id = t2.rp_main_student_id

我想您需要这样的查询:

SELECT t1.given_name, t4.subject_name, t2.main_id
FROM t1
LEFT JOIN t2 ON t1.student_id = t2.student_id
LEFT JOIN t3 ON t2.main_id = t3.main_id
LEFT JOIN t4 ON t3.subject_id = t4.subject_id

我想您需要这样的查询:

SELECT t1.given_name, t4.subject_name, t2.main_id
FROM t1
LEFT JOIN t2 ON t1.student_id = t2.student_id
LEFT JOIN t3 ON t2.main_id = t3.main_id
LEFT JOIN t4 ON t3.subject_id = t4.subject_id

你需要加入这些表。每个表都应该有一个主键(或唯一键),以及对其他表的引用(所谓外键)

SELECT given_name , t4.subject_name, t2.class, t3.main_id
FROM t1 
JOIN t2 
ON t1.student_id = t2.student_id
JOIN t3
ON t2.main_id = t3.main_id
JOIN t4
ON t2.subject_id = t3.subject_id
WHERE t2.school_year = "2011""  and t2.sem = 1 --added where because of your comment
所以我们假设

  • 学生表
    t1
    有主键
    student\u id
  • 受试者表
    t4
    有PK
    subject\u id
  • t2
    是一个关联表,用于链接学生(使用他们的
    student\u id
    )到具有
    主id
    的类
  • t3
    是一个将主题链接到类的关联表

您需要加入这些表。每个表都应该有一个主键(或唯一键),以及对其他表的引用(所谓外键)

SELECT given_name , t4.subject_name, t2.class, t3.main_id
FROM t1 
JOIN t2 
ON t1.student_id = t2.student_id
JOIN t3
ON t2.main_id = t3.main_id
JOIN t4
ON t2.subject_id = t3.subject_id
WHERE t2.school_year = "2011""  and t2.sem = 1 --added where because of your comment
所以我们假设

  • 学生表
    t1
    有主键
    student\u id
  • 受试者表
    t4
    有PK
    subject\u id
  • t2
    是一个关联表,用于链接学生(使用他们的
    student\u id
    )到具有
    主id
    的类
  • t3
    是一个将主题链接到类的关联表
这应该可以,但请告诉我们您需要什么形式的数据。你想让每个学生上一节课吗?还是每班学生

select t1.given_name, t4.subject_name, t2.class, t2.main_id
  from t1 
  join t2 on t1.student_id = t2.student_id
  join t2.main_id = t3.main_id
  join t3.subject_id = t4.subject_id
这应该可以,但请告诉我们您需要什么形式的数据。你想让每个学生上一节课吗?还是每班学生?

试试:

select t1.given_name, t4.subject_name, t2.class, t2.main_id
  from t1 
  join t2 on t1.student_id = t2.student_id
  join t2.main_id = t3.main_id
  join t3.subject_id = t4.subject_id
尝试:


从t1、t2、t4中选择t1.given_name、t4.subject_name、t2.class、t2.main_id
在t3中,主键是main_id(或在t2中)?school_year=2011和sem=1(在where条件下)@apssiva:我在我的查询中添加了
where
子句,但是如果您需要在您的问题中添加一些内容,你必须点击问题下方的
edit
按钮来添加额外的细节。
从t1、t2、t4中选择t1.given_name、t4.subject_name、t2.class、t2.main_id
在t3中主键是main_id(或在t2中)?school_year=2011和sem=1(在where条件下)@apssiva:我在我的查询中添加了
where
子句,但是,如果您需要在问题中添加内容,则必须单击问题下方的
编辑
按钮来添加额外的详细信息。