在mysql中加入四个表格。语法错误

时间:2015-09-19 07:24:38

标签: mysql sql join

我需要在mysql中加入四个表。

我的数据库结构:

DROP DATABASE IF EXISTS db_applicant;

CREATE DATABASE db_applicant
  DEFAULT CHARACTER SET 'utf8'
  DEFAULT COLLATE 'utf8_unicode_ci';

USE db_applicant;

--
-- TABLE: PROFESSION
--
CREATE TABLE PROFESSION (
  PROFESSION_ID   INT         NOT NULL AUTO_INCREMENT,
  PROFESSION_NAME VARCHAR(50) NOT NULL,
  PRIMARY KEY (PROFESSION_ID)
);

--
-- TABLE: SUBJECT
--
CREATE TABLE SUBJECT (
  SUBJECT_ID   INT         NOT NULL AUTO_INCREMENT,
  SUBJECT_NAME VARCHAR(50) NOT NULL,
  PRIMARY KEY (SUBJECT_ID)
);

--
-- TABLE: APPLICANT
--
CREATE TABLE APPLICANT (
  APPLICANT_ID  INT         NOT NULL AUTO_INCREMENT,
  PROFESSION_ID INT         NOT NULL,
  LAST_NAME     VARCHAR(30) NOT NULL,
  FIRST_NAME    VARCHAR(30) NOT NULL,
  ENTRANCE_YEAR INT         NOT NULL,
  PRIMARY KEY (APPLICANT_ID),
  FOREIGN KEY (PROFESSION_ID) REFERENCES PROFESSION (PROFESSION_ID)
);

--
-- TABLE: APPLICANT_RESULT
--
CREATE TABLE APPLICANT_RESULT (
  APPLICANT_RESULT_ID INT NOT NULL AUTO_INCREMENT,
  APPLICANT_ID        INT NOT NULL,
  SUBJECT_ID          INT NOT NULL,
  MARK                INT,
  PRIMARY KEY (APPLICANT_RESULT_ID),
  FOREIGN KEY (SUBJECT_ID)
  REFERENCES SUBJECT (SUBJECT_ID),
  FOREIGN KEY (APPLICANT_ID)
  REFERENCES APPLICANT (APPLICANT_ID)
);


--
-- TABLE: SPECIALITY_SUBJECT
--
CREATE TABLE SPECIALITY_SUBJECT (
  SP_SB_ID      INT NOT NULL AUTO_INCREMENT,
  PROFESSION_ID INT NOT NULL,
  SUBJECT_ID    INT NOT NULL,
  PRIMARY KEY (SP_SB_ID),
  FOREIGN KEY (PROFESSION_ID)
  REFERENCES PROFESSION (PROFESSION_ID),
  FOREIGN KEY (PROFESSION_ID)
  REFERENCES PROFESSION (PROFESSION_ID),
  FOREIGN KEY (SUBJECT_ID)
  REFERENCES SUBJECT (SUBJECT_ID)
);

我需要输出类似于:

first_name(表格申请人的这一栏),last_name(表格申请人的这一栏),entrance_year(表格申请人的这一栏),profession_name(表专业的这一栏),subject_name(表格主题中的这一栏),标记(来自表申请人_result的这一栏。

你可以看到,我有相关的字段。但我需要强大的INNER QUERY。 为此,我创建了具有结构的新表:

CREATE TABLE APP(
  ALL_ID              INT NOT NULL AUTO_INCREMENT,
  APPLICANT_ID        INT NOT NULL,
  SUBJECT_ID          INT NOT NULL,
  PROFESSION_ID       INT NOT NULL,
  APPLICANT_RESULT_ID INT NOT NULL,
  PRIMARY KEY (ALL_ID),
  FOREIGN KEY (SUBJECT_ID)
  REFERENCES SUBJECT (SUBJECT_ID),
  FOREIGN KEY (APPLICANT_ID)
  REFERENCES APPLICANT (APPLICANT_ID),
  FOREIGN KEY (PROFESSION_ID)
  REFERENCES PROFESSION (PROFESSION_ID),
  FOREIGN KEY (APPLICANT_RESULT_ID)
  REFERENCES APPLICANT_RESULT (APPLICANT_RESULT_ID)
);

我的内心:

SELECT ap.ALL_ID, a.FIRST_NAME, a.LAST_NAME,
       a.ENTRANCE_YEAR, p.PROFESSION_NAME s.SUBJECT_NAME, ar.MARK
FROM app ap
JOIN (applicant a, profession p, subject s, applicant_result ar)
 ON ap.APPLICANT_ID = a.APPLICANT_ID
AND ap.SUBJECT_ID = s.SUBJECT_ID
AND ap.PROFESSION_ID = p.PROFESSION_ID
AND ap.APPLICANT_RESULT_ID = ar.APPLICANT_RESULT_ID;

但我有错误:

  

[2015-09-19 10:08:52] [42000] [1064]您的SQL中有错误   句法;查看与MySQL服务器版本对应的手册   要使用正确的语法,请使用附近的“.SUBJECT_NAME”,ar.MARK FROM app ap   加入(申请人a,专业p,主题s,a'第1行

1 个答案:

答案 0 :(得分:4)

你不这么认为,逗号','在s.SUBJECT_NAME之前的select语句中缺少?

SELECT ap.ALL_ID, a.FIRST_NAME, a.LAST_NAME,
       a.ENTRANCE_YEAR, p.PROFESSION_NAME s.SUBJECT_NAME, ar.MARK