【问题标题】:MySQL-Need to select a row from one table to another table WHERE a <# will generate in SELECT statementMySQL - 需要从一个表中选择一行到另一个表 WHERE a <# 将在 SELECT 语句中生成
【发布时间】:2014-10-05 20:07:52
【问题描述】:

我的第一个表有部门名称和博士人数。我的第二张桌子上有教授在特定部门的名字。我需要拉动那些在博士少于 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 /

【问题讨论】:

  • 你目前得到了什么?有什么错误吗?尝试在表名和列名中保持相同的大小写,以便在查询中使用 Dept 而不是 dept
  • 这是一个基本的join 查询。你在学习 SQL 吗?如果是这样,您应该在问题中指定这一点。如果没有,您应该学习一些 SQL,以便您可以有效地使用数据库。

标签: mysql


【解决方案1】:

就我个人而言,我会给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

【讨论】:

  • 谢谢!我对此并不陌生,并且正在尝试了解基础知识。我一直在通过 LYNDA.com 学习,最近被告知使用该网站来帮助我解决一些问题。我喜欢SQLFIDDLE,谢谢你介绍我。我使用撇号对我的结果有不同的看法。我以为我必须使用外键才能得到答案,但我看到你没有使用它。我将不得不更多地研究这个 JOIN 语句。
  • 嗨@Mel_G,使用外键对于数据一致性和规范化来说是一个好主意,但迈向更大目标的一小步:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 2017-10-14
  • 2012-07-30
  • 1970-01-01
相关资源
最近更新 更多