MySQL-需要从一个表到另一个表选择一行<#将在SELECT语句中生成

时间:2014-10-05 20:07:52

标签: mysql

我的第一张表有部门名称和博士数量。我的第二张桌子在特定部门有教授的名字。我需要吸引教育部门的教授,这些教授的学历不到50科学。

  CREATE TABLE Dept (
        dname VARCHAR(100), 
        numphds INT
     );

    INSERT INTO Dept VALUES ( '"Chemical Engineering"', 32 );
    INSERT INTO Dept VALUES ( '"Civil Engineering"', 88 );
    INSERT INTO Dept VALUES ( '"Computer Sciences"', 47 );

    CREATE TABLE Prof (
        pname VARCHAR(100), 
        dname VARCHAR(100) 
    );

    INSERT INTO Prof VALUES ( '"Brian, C."', '"Chemical Engineering"' );
    INSERT INTO Prof VALUES ( '"Brown, S."', '"Civil Engineering"' );
    INSERT INTO Prof VALUES ( '"Jones, J."', '"Computer Sciences"' );


SELECT dname, numphds FROM dept WHERE numphds <50;

/ 使用以下SELECT语句是我迷失的地方,似乎无法理解如何在dname和numphds的结果中获得教授名称&lt; 50。我知道我不会通过使用FROM DEPT语句得到结果。任何想法 /

1 个答案:

答案 0 :(得分:0)

就个人而言,我会给Dept一个主键和索引列deptId并在Prof表上也这样做。这样,就无需加入文本字段。

CREATE TABLE Dept (
    deptId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    dname VARCHAR(100), 
    numphds INT
 );

INSERT INTO Dept VALUES ( 1, 'Chemical Engineering', 32 );
INSERT INTO Dept VALUES ( 2, 'Civil Engineering', 88 );
INSERT INTO Dept VALUES ( 3, 'Computer Sciences', 47 );

CREATE TABLE Prof (
    pname VARCHAR(100), 
    dname VARCHAR(100),
    deptId INT NOT NULL AUTO_INCREMENT PRIMARY KEY 
);

INSERT INTO Prof VALUES ( 'Brian, C.', 'Chemical Engineering', 1);
INSERT INTO Prof VALUES ( 'Brown, S.', 'Civil Engineering', 2);
INSERT INTO Prof VALUES ( 'Jones, J.', 'Computer Sciences', 3);

其次,您是否意识到您的文本字段有撇号?

要使用此格式选择它们,我会join使用查询

SELECT dept.dname, dept.numphds, prof.pname FROM dept join `prof` on prof.deptId = dept.deptId  WHERE dept.numphds <50;

这是你的SQLFiddle demo