SQL重复,如何避免查询中的重复?

SQL重复,如何避免查询中的重复?,sql,database,oracle11g,Sql,Database,Oracle11g,我试图获取存储在表中的名称和地址,但得到的数据重复。我不知道如何避免它,因为我是这个领域的新手。下面是一些命令和结果的图片 命令: 结果: 所有者表: 地址表: 请帮帮我:( 另外,它们都是虚拟数据。您需要使用表中相互引用的列在两个表的所有者和地址之间进行连接 SELECT firstname,lastname,addressline_1 FROM owners o JOIN addresses a ON o.colName=a.colName 您的查询正在两个表之间执行笛卡尔积,这将

我试图获取存储在表中的名称和地址,但得到的数据重复。我不知道如何避免它,因为我是这个领域的新手。下面是一些命令和结果的图片

命令:

结果:

所有者表:

地址表:

请帮帮我:(


另外,它们都是虚拟数据。

您需要使用表中相互引用的列在两个表的所有者和地址之间进行连接

SELECT firstname,lastname,addressline_1
FROM owners o
JOIN addresses a
ON o.colName=a.colName
您的查询正在两个表之间执行笛卡尔积,这将为表所有者中的每一行提供表地址的所有行

如果您使用建议的ANSI SQL语法,即使用ON子句而不是WHERE子句执行联接,则可以避免获得无意义的行。虽然您没有指定表之间联接的条件,但仍然成功执行了使用WHERE子句进行联接的旧语法y,但如果在
子句上使用,则会抛出错误

编辑

根据表的模式,查询将是

SELECT firstname,lastname,addressline_1
FROM owners o
JOIN addresses a
ON o.ownerid=a.owners_ownerid

您需要使用相互引用的表中的列在两个表所有者和地址之间进行连接

SELECT firstname,lastname,addressline_1
FROM owners o
JOIN addresses a
ON o.colName=a.colName
您的查询正在两个表之间执行笛卡尔积,这将为表所有者中的每一行提供表地址的所有行

如果您使用建议的ANSI SQL语法,即使用ON子句而不是WHERE子句执行联接,则可以避免获得无意义的行。虽然您没有指定表之间联接的条件,但仍然成功执行了使用WHERE子句进行联接的旧语法y,但如果在
子句上使用,则会抛出错误

编辑

根据表的模式,查询将是

SELECT firstname,lastname,addressline_1
FROM owners o
JOIN addresses a
ON o.ownerid=a.owners_ownerid

您必须在查询中添加
where
子句:-

SELECT OWNERS.first_name, OWNERS.last_name, ADDRESSES.address_line1
FROM OWNERS, ADDRESSES
WHERE OWNERS.ownerid = ADDRESSES.owners_ownerid
或者您可以使用
join

SELECT OWNERS.first_name, OWNERS.last_name, ADDRESSES.address_line1
FROM OWNERS
JOIN ADDRESSES
ON OWNERS.ownerid = ADDRESSES.owners_ownerid

您必须在查询中添加
where
子句:-

SELECT OWNERS.first_name, OWNERS.last_name, ADDRESSES.address_line1
FROM OWNERS, ADDRESSES
WHERE OWNERS.ownerid = ADDRESSES.owners_ownerid
或者您可以使用
join

SELECT OWNERS.first_name, OWNERS.last_name, ADDRESSES.address_line1
FROM OWNERS
JOIN ADDRESSES
ON OWNERS.ownerid = ADDRESSES.owners_ownerid

您需要在某个键上连接这两个表。这些表中还有哪些可以连接的识别列?您的Addresses表是否有它所属所有者的ID?所有者和地址之间是否存在任何关系?了解如何使用
Join
。如果您不知道这是什么,请你需要学习关系数据库的基础知识。让我在这里上传这些表……因此它的所有者ID将链接表。你需要在某个键上连接这两个表。这些表中还存在哪些可以连接的识别列?你的Addresses表是否有它所属所有者的ID?是否有所有者和地址之间是否存在任何关系?学习如何使用
join
。如果你不知道这是什么,那么你需要学习关系数据库的基础知识。请让我将表上载到此处…因此链接表的所有者ID感谢@Sampat检查更新的表…我将尝试使用sql并让你知道:)谢谢@Sampat查看更新的表格。。。我将尝试您的sql并让您知道:)@m hasan。。哇!!你能给我解释一下突出显示的
位吗?从所有者
o
JOIN addresses
a
ON
o.ownerid=a.ownerid=a.owners\u ownerid
中选择firstname、lastname、addressline\u 1。请点击链接。更多详细答案there@m哈桑。。哇!!你能给我解释一下突出显示的
位吗?从所有者
o
JOIN addresses
a
ON
o.ownerid=a.ownerid=a.owners\u ownerid
中选择firstname、lastname、addressline\u 1。请单击链接。此处有更详细的答案