Oracle SQL从一个表中选择与另一个表相关的数据

用户名

我对SQL的了解并不多,因此我的工作是创建一个具有友谊的基本社交网络。为此,我创建了一个表(有更多列,但是出于这个问题,我删除了它们)。

CREATE TABLE USERS
(USER_ID CHAR(8) NOT NULL,
USER_LNAME VARCHAR(20) NOT NULL,
USER_FNAME VARCHAR(20) NOT NULL,
PRIMARY KEY (USER_ID));

我创建了另一个表,您可以在其中插入两个人的user_id并生成他们成为朋友的时间。

CREATE TABLE USERFRIEND
(USER_ID CHAR(8) NOT NULL,
FRIEND_ID CHAR(8) NOT NULL, 
EST_DATE TIMESTAMP NOT NULL,
PRIMARY KEY (USER_ID, FRIEND_ID),
FOREIGN KEY (USER_ID) REFERENCES USERS (USER_ID),
FOREIGN KEY (FRIEND_ID) REFERENCES USERS (USER_ID));

我为任何一个表插入数据都没有问题。例如,这是我插入的数据的一个示例(我的实际数据库有大约15个朋友)

INSERT INTO USERS
VALUES ('10000001', 'Jones', 'Tom');
INSERT INTO USERS
VALUES ('10000002', 'Smith', 'Michael');
INSERT INTO USERS
VALUES ('10000003', 'Johnson', 'Andrew');
INSERT INTO USERS
VALUES ('10000004', 'Williams', 'David');

和友谊

INSERT INTO USERFRIEND
VALUES ('10000001', '100000002', CURRENT_TIMESTAMP);
INSERT INTO USERFRIEND
VALUES ('10000001', '100000003', CURRENT_TIMESTAMP);
INSERT INTO USERFRIEND
VALUES ('10000002', '100000004', CURRENT_TIMESTAMP);

任务之一是获取一个人的好友列表。

例如,迈克尔·史密斯(Michael smith)将与汤姆·琼斯(Tom Jones)和大卫·威廉姆斯(David Williams)(01,04)成为朋友。我的问题是,在一个友谊中,迈克尔是user_id,在另一个友谊中,friend_id

到目前为止,我得出的最好结果是这段代码。

SELECT user_id, friend_id
FROM USERFRIEND
WHERE USER_ID = 10000002
OR FRIEND_ID = 10000002;

这至少返回了Smith(10000002)与之成为朋友的所有ID的结果,但是当USER_ID和FRIEND_ID都引用相同的内容时,我不确定如何用这些人的相关名称返回此ID。

SELECT DISTINCT a.user_fname, a.user_lname, b.USER_ID, b.FRIEND_ID
FROM USERS a, USERFRIEND b 
WHERE b.USER_ID = 10000002
OR b.FRIEND_ID = 10000002;

我已经尝试了这段代码,尽管在我的数据库中,只有20个友谊,但它返回80个结果,并且没有一个名称正确匹配。

希望你们中的一个能为我找到(可能很简单)的解决方案,因为我不知道我应该做什么。

阿迪蒂亚·卡基德(Aditya Kakirde)

由于两个表之间没有联接,因此上面的查询产生了笛卡尔乘积。您应该至少有n-1个联接,其中n是使用的表数。

您可以像这样连接两个表-

SELECT DISTINCT a.user_fname, a.user_lname, b.USER_ID, b.FRIEND_ID
FROM USERS a, USERFRIEND b 
WHERE a.user_id=b.user_id
or a.user_d=b.friend_id

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从多个表中选择,插入另一个表 Oracle SQL 查询

来自分类Dev

Oracle数据库,将数据从一个表更新到另一个表

来自分类Dev

从基于另一个表的表中选择记录数Oracle

来自分类Dev

从一个表到另一个表的 Oracle 事务更新量

来自分类Dev

从一个表到另一个表的Oracle SQL更新引发语法错误

来自分类Dev

从表2中选择一个值,该值取决于表1(Oracle SQL)中的另一个值

来自分类Dev

Oracle-SQL查询根据列值将数据从一个表分到另一个表?

来自分类Dev

如果存在,则从表中选择,否则从 oracle 中的另一个表中选择

来自分类Dev

将结果数据从一个函数使用到另一个SQL ORACLE

来自分类Dev

在单个查询中将多个行从一个表插入到Oracle中的另一个表

来自分类Dev

在oracle中查询以从一个表中获取多个记录并输入另一个表

来自分类Dev

从一个表中选择数据并为主“键”连接另一个表相当慢

来自分类Dev

#符号可防止数据从一个表单页面转到另一个Oracle APEX

来自分类Dev

使用oracle sql developer从一个数据库复制到另一个数据库-连接失败

来自分类Dev

使用oracle sql developer从一个数据库复制到另一个数据库-连接失败

来自分类Dev

Oracle SQL-如何在另一个查询中选择子字符串索引?

来自分类Dev

Oracle SQL:根据条件将某些记录从一个表转移到另一个过滤行

来自分类Dev

使用SQL将Oracle数据库表的副本创建到另一个Oracle数据库

来自分类Dev

使用 Oracle SQL 从基于从另一个表拆分的正则表达式的表中进行选择

来自分类Dev

一个表中的SQL更新值与Oracle SQL Developer中的另一个表的值匹配

来自分类Dev

Oracle更新了一个表,以将数据输入到另一个表中

来自分类Dev

oracle proc通过dblink使用另一个表更新一个表

来自分类Dev

Oracle 连接到一个表或另一个表

来自分类Dev

如何使用另一个表中的数据更新Python中的Oracle表

来自分类Dev

使用SAS中另一个表中的数据更新oracle表

来自分类Dev

Oracle-PL / SQL编码-从另一个表插入多个表

来自分类Dev

Oracle SQL查询表并根据结果从另一个表中删除

来自分类Dev

sql Oracle:仅当值存在时才从另一个表插入一个值

来自分类Dev

Oracle SQL Function使用来自另一个架构的数据表示表或视图不存在

Related 相关文章

  1. 1

    从多个表中选择,插入另一个表 Oracle SQL 查询

  2. 2

    Oracle数据库,将数据从一个表更新到另一个表

  3. 3

    从基于另一个表的表中选择记录数Oracle

  4. 4

    从一个表到另一个表的 Oracle 事务更新量

  5. 5

    从一个表到另一个表的Oracle SQL更新引发语法错误

  6. 6

    从表2中选择一个值,该值取决于表1(Oracle SQL)中的另一个值

  7. 7

    Oracle-SQL查询根据列值将数据从一个表分到另一个表?

  8. 8

    如果存在,则从表中选择,否则从 oracle 中的另一个表中选择

  9. 9

    将结果数据从一个函数使用到另一个SQL ORACLE

  10. 10

    在单个查询中将多个行从一个表插入到Oracle中的另一个表

  11. 11

    在oracle中查询以从一个表中获取多个记录并输入另一个表

  12. 12

    从一个表中选择数据并为主“键”连接另一个表相当慢

  13. 13

    #符号可防止数据从一个表单页面转到另一个Oracle APEX

  14. 14

    使用oracle sql developer从一个数据库复制到另一个数据库-连接失败

  15. 15

    使用oracle sql developer从一个数据库复制到另一个数据库-连接失败

  16. 16

    Oracle SQL-如何在另一个查询中选择子字符串索引?

  17. 17

    Oracle SQL:根据条件将某些记录从一个表转移到另一个过滤行

  18. 18

    使用SQL将Oracle数据库表的副本创建到另一个Oracle数据库

  19. 19

    使用 Oracle SQL 从基于从另一个表拆分的正则表达式的表中进行选择

  20. 20

    一个表中的SQL更新值与Oracle SQL Developer中的另一个表的值匹配

  21. 21

    Oracle更新了一个表,以将数据输入到另一个表中

  22. 22

    oracle proc通过dblink使用另一个表更新一个表

  23. 23

    Oracle 连接到一个表或另一个表

  24. 24

    如何使用另一个表中的数据更新Python中的Oracle表

  25. 25

    使用SAS中另一个表中的数据更新oracle表

  26. 26

    Oracle-PL / SQL编码-从另一个表插入多个表

  27. 27

    Oracle SQL查询表并根据结果从另一个表中删除

  28. 28

    sql Oracle:仅当值存在时才从另一个表插入一个值

  29. 29

    Oracle SQL Function使用来自另一个架构的数据表示表或视图不存在

热门标签

归档