【问题标题】:Select Statement in SQL inheritanceSQL继承中的Select语句
【发布时间】:2021-11-14 07:34:21
【问题描述】:

创建表用户( UserID int 主键, 名称 varchar, 输入整数 );

创建表学生( UserID int 主键引用 User(UserID), 标记整数 );

创建表讲座( UserID int 主键引用 User(UserID), 工资 int );

有人可以帮助选择学生或讲座的陈述吗?

Lecture 和 Student 表都是从 User 表继承的,所以我需要知道如何从这些表中插入数据和选择数据。

【问题讨论】:

  • 请添加更多详细信息

标签: sql sqlite


【解决方案1】:

要查询表,这会起作用:

SELECT         u.[Name]
                 , s.marks
                 , l.salary
    FROM           [User]  u
        INNER JOIN Student s
            ON u.UserId = s.UserId
        INNER JOIN Lecture l
            ON u.UserId = l.UserId;

但是,如果 Student / Lecture 表中还没有记录,您应该改用 LEFT Join

至于插入数据,您需要使用SCOPE_IDENTITY()

Insert into [User] (Name) values ('Melvin') 

获取UserId的身份

DECLARE @userId INT;
SELECT @userId = SCOPE_IDENTITY ();

INSERT INTO Student
(
    UserID
  , Marks
)
VALUES
(userId, 5);

更新:刚刚注意到这是我不太熟悉的 SQL Lite,但它看起来支持 last_insert_rowid() 而不是 SCOPE_IDENTITY (),但您应该了解它的要点。

【讨论】:

  • 谢谢它的工作
【解决方案2】:

如果你想选择学生 X:

SELECT *
FROM Student
WHERE UserID = X

如果您想选择所有学生及其用户数据,您需要以下内容:

SELECT *
FROM User
  JOIN Student ON User.UserID = Student.UserID

【讨论】:

  • 感谢这个也有效
【解决方案3】:

我不明白你的问题,但我认为你需要这样的东西

select Name, marks
from User as u, Student as s
inner join u.UserID == s.UserID;

【讨论】:

  • (1) 你不理解这个问题,(2) 你发布了一个甚至没有运行的代码的答案,(3) 你的答案被赞成!
  • 感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-05
  • 2013-10-10
  • 1970-01-01
  • 2014-11-03
  • 2015-02-27
  • 2014-12-23
相关资源
最近更新 更多