【问题标题】:how to select data from multiple tables?如何从多个表中选择数据?
【发布时间】:2011-09-15 08:13:55
【问题描述】:

我有 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

我需要选择(given_name、subject_name、class & main_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.class, t2.main_id FROM t1, t2, t4
  • 在 t3 中主键是 main_id(或在 t2 中)?
  • school_year = 2011 和 sem = 1(在 where 条件下)
  • @apssiva:我在查询中添加了WHERE 子句,但是如果您需要在问题中添加一些内容,则必须单击问题下方的edit 按钮以添加更多详细信息.

标签: mysql select multiple-tables


【解决方案1】:

我猜你需要这样的查询:

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

【讨论】:

    【解决方案2】:
       SELECT
          t1.given_name,
          t3.subject_name,
          t2.class,
          t2.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 t3.subject_id = t4.subject_ID
    

    应该这样做,但请告诉我们您需要数据的形式。你想得到每个学生的课程吗?还是每个班级的学生?

    【讨论】:

      【解决方案3】:

      您需要加入表格。每个表都应该有一个 PRIMARY(或 UNIQUE)键,以及对其他表的引用(所谓的 FOREIGN KEY)。

      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有PKstudent_id
      • 科目表t4有PKsubject_id
      • t2 是链接学生的关联表(使用他们的 student_id) 到具有main_id 的类。
      • t3 是一个关联表,将科目与班级联系起来。

      【讨论】:

        【解决方案4】:
        SELECT table_name1.given_name,table_name4.subject_name,
        table_name2.class,table_name2.main_id
        FROM table_name1
        INNER JOIN table_name2
        ON table_name1.studen_id=table_name2.studen_id
        INNER JOIN table_name3
        ON table_name2.main_id=table_name3.main_id
        INNER JOIN table_name4
        ON table_name3.subject_id=table_name4.subject_id
        

        【讨论】:

          【解决方案5】:

          试试:

             SELECT t1.given_name, t4.subject_name, t2.class, 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
              WHERE t2.school_year = 2011 
                AND t2.sem = 1
          

          【讨论】:

            【解决方案6】:
            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
            

            【讨论】:

              猜你喜欢
              • 2013-05-29
              • 2014-01-05
              • 2022-08-18
              • 2021-02-06
              • 2020-07-04
              • 2016-06-28
              • 2012-05-09
              • 1970-01-01
              相关资源
              最近更新 更多