как выбрать данные из нескольких таблиц? - PullRequest
2 голосов
/ 15 сентября 2011

У меня есть 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

Мне нужно выбрать (имя_символа, имя_субъекта, класс & 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

Ответы [ 6 ]

0 голосов
/ 15 сентября 2011
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
0 голосов
/ 15 сентября 2011

Попробуйте:

   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
0 голосов
/ 15 сентября 2011
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
0 голосов
/ 15 сентября 2011
   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

это должно сделать это, но, пожалуйста, сообщите нам, в какой форме вам нужны данные.Вы хотите получить классы на одного студента?или учеников в классе?

0 голосов
/ 15 сентября 2011

Вам нужно присоединиться к столам.Каждая таблица должна иметь ПЕРВИЧНЫЙ (или УНИКАЛЬНЫЙ) ключ и ссылки (так называемые ИНОСТРАННЫЕ КЛЮЧИ) на другие таблицы.

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 имеет PK student_id
  • таблица предметов t4 имеет PK subject_id
  • t2 - это ассоциативная таблица, которая связывает студентов (используя их student_id)к классам, которые имеют main_id.
  • t3 - ассоциативную таблицу, которая связывает предметы с классами.
0 голосов
/ 15 сентября 2011

Полагаю, вам нужен такой запрос:

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
...