Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 当将两个或多个表关联在一起时,如何在查询中获取具有空值的行?_Sql_Oracle_Oracle10g_Oracle Sqldeveloper - Fatal编程技术网

Sql 当将两个或多个表关联在一起时,如何在查询中获取具有空值的行?

Sql 当将两个或多个表关联在一起时,如何在查询中获取具有空值的行?,sql,oracle,oracle10g,oracle-sqldeveloper,Sql,Oracle,Oracle10g,Oracle Sqldeveloper,上面的代码以代码的形式显示了表及其模式。 下面是我写的问题 drop table person; drop table interest; drop table relation; create table person ( pid int primary key, fname varchar2(20), age int, interest int references interest(intID), relation int r

上面的代码以代码的形式显示了表及其模式。 下面是我写的问题

drop table person;
drop table interest;
drop table relation;


create table person (
      pid int primary key,
      fname varchar2(20),
      age int,
      interest int references interest(intID),
      relation int references relation(relID)
);

create table interest (
      intID int primary key,
      intName VARCHAR2(20)
);

create table relation (
      relID int primary key,
      relName varchar2(20)
);

insert into person values(1, 'Rahul', 18, null, 1);
insert into person values(2, 'Sanjay', 19, 2, null);
insert into person values(3, 'Ramesh', 20, 4, 5);
insert into person values(4, 'Ajay', 17, 3, 4);
insert into person values(5, 'Edward', 18, 1, 2);

insert into interest values(1, 'Cricket');
insert into interest values(2, 'Football');
insert into interest values(3, 'Food');
insert into interest values(4, 'Books');
insert into interest values(5, 'PCGames');

insert into relation values(1, 'Friend');
insert into relation values(2, 'Friend');
insert into relation values(3, 'Sister');
insert into relation values(4, 'Mom');
insert into relation values(5, 'Dad');

select * from person;
select * from interest;
select * from relation;

img2是由我编写的,在我的查询中(如img1中),空值被忽略

为什么会这样? 请提供解决方案。
谢谢。

看起来您需要外部连接

select person.fname, interest.intName, relation.relName
from person, interest, relation
where person.interest = interest.intID and relation.relID = person.relation;

加入
<代码>加入<代码>连接。是否使用连接@戈登林诺夫。完全连接在这种情况下有用吗?您应该学会使用正确、明确、标准、可读的
Join
语法。非常感谢@Littlefoot。
SQL> select p.fname, i.intname, r.relname
  2  from person p left join interest i on p.interest = i.intid
  3                left join relation r on r.relid = p.relation;

FNAME                INTNAME              RELNAME
-------------------- -------------------- --------------------
Rahul                                     Friend
Edward               Cricket              Friend
Ajay                 Food                 Mom
Ramesh               Books                Dad
Sanjay               Football

SQL>