问题标签 [natural-join]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7297 浏览

sql - 将 Natural Join 与 Where 操作一起使用

我有一个一直在 phpMyAdmin 中使用的查询,它运行良好,但是我将我的数据库迁移到不同的服务器,现在我正在使用 SQL*Plus 来执行我的查询。查询现在正在生成

这是我的查询:

由于它不喜欢我的限定词,是否有其他方法可以在没有自然连接的情况下获取查询?我已经尝试对 Join 和 Inner Join 使用相同的东西,但两者都不起作用。

0 投票
2 回答
2533 浏览

python - 自然连接实现 Python

我正在努力在 python 中实现自然连接。前两行显示表的属性,接下来的两行显示每个表的元组或行。

预期输出:

我得到了什么:

我查看了代码,一切似乎都是正确的,我将不胜感激。

0 投票
2 回答
28939 浏览

sql - 在查询中的复合外键/主键列上连接表

给定特定订阅查询交付的好方法是什么?有没有办法为列名和相应的外键分配一个方法,PRIMARY KEY (magazine_id, user_id)以便我可以这样查询:

注意:我可以这样写:

但是,我的印象是有一种不那么冗长的方法来实现这一点。

0 投票
1 回答
410 浏览

mysql - 数据库:无损分解和自然连接

我要回答的问题是:

考虑R(A,B,C)和 FD A --> B。给出R的有效实例,这样当我们将r投影到关系R1(A,B)R2 (B,C)上,然后再次连接R1R2时,我们不会得到相同的实例r

我想不出会发生这种情况的情况。由于 B 依赖于 A 并且两个表都将连接 B 值,自然连接不总是相同的吗?

前任。

0 投票
4 回答
25460 浏览

sql - 自然连接中元组的最大和最小数量

我遇到了一个问题,指出

考虑以下与学生有关的关系模式

  • 数据库:学生(rollno,姓名,地址)
  • 注册 ( rollno, courseno, coursename )

其中主键带有下划线。Student 和 Enroll 表中的元组数分别为 120 和 8。(Student * Enroll) 中可以存在的最大和最小元组数是多少,其中 '*' 表示自然连接?

我已经在互联网上看到了几个这样这样的解决方案

据我了解。最大元组应为 8,最小也应为 8,因为对于每个 (rollnum,course),Students 中都应该有一个 roll num。任何可以在这方面提供帮助的人

0 投票
2 回答
131 浏览

mysql - The Natural Join of Mysql

I'm a little confused about the natural join in mysql.

Suppose that: There are two tables
table1 has columns: id, name, address, number (id is the PK of table1)
table2 has columns: id, name, number, money (id is the PK of table2)

I have already make "id" of table1 a foreign key, referencing the "id" of table2

and suppose "number" in table1 is "people's number" and "number" in table2 is "telephone number" those two columns have different meaning but same name


When I do the natural join of table1 and table2:

Does mysql just simply check all the columns of table1 and table2, whose name are same, which means that a tuple(row) will be selected ,if and only if, "id", "name" and "number" must be all same (for example, the "id" and "name" are same but "number" is different, the row will not be selected)?

OR

Does mysql will only check the foreign keys created, which means that a row will be selected , if and only if, "id" is same?


another question is:

after natural join of table1 and table2, will there be only 1 column called "id" or 2 columns called "table1.id" and "table2.id"??

Thanks indeed!

0 投票
1 回答
96 浏览

mysql - 嵌套查询帮助

我需要使用嵌套查询来解决这个问题,但我以前从未使用过嵌套查询。任何帮助表示赞赏。问题是:“列出那些运送重量超过 200 磅的零件的供应商的名称。”

这是我使用自然连接的方法。但是这个问题需要一个嵌套查询。


到目前为止,我已经尝试过了,这就是我所拥有的:

这是 ERD 图图像的链接:http: //tinypic.com/r/244qr74/8

0 投票
1 回答
1496 浏览

sql - 从 JOIN 中删除重复项

我目前正在学校学习数据库,但不幸的是,我们的老师根本不喜欢帮助或回答问题。我目前正在做一些 Oracle DB 练习,我遇到了一个我真的不知道如何解决的问题。

表 1:学生


表 2:LN


现在,这里有问题。

Q1:创建一个 SQL 查询 (JOIN),这将导致重复的行。 Q2:从 Q1 更改您的查询,因此现在它不会显示任何重复项。

我在这里的第一个“问题”是我不是 100% 确定重复的定义是什么。即使您没有在 SELECT 命令中选择它们,是否在所有列上都具有 100% 相同内容的重复行?

示例:假设我创建了一个查询,并在 SELECT 命令中选择了“姓氏”和“年龄”列,我的结果如下所示:


但这实际上是两个不同的人,并且有不同的名字。这些是否有资格作为重复项,因为我没有选择名字,因此它没有显示,或者我通过 SELECT 选择的内容无关紧要,并且重复的行只有在它们 100% 相同的情况下才有资格作为重复项?

好吧,回到我的问题。对于Q1,我选择了一个简单的 (INNER) JOIN 查询,如下所示

SELECT S.ID, S.Family_Name, S.First_Name, LN.FKBEZ FROM Students S JOIN LN ON S.ID = LN.ID


这就是结果。我没有在我的查询中选择“等级”,但我也为你列出了它,所以你可以更好地理解我的问题。现在,由于我没有在查询中选择“GRADE”,我认为第 1 + 2 行是重复的,因为它们在每个可见列中都是相同的。然后我继续到 Q2 并使用完全相同的查询,只是这次使用了 NATURAL JOIN(因为这将消除所有重复的行),但结果完全相同。

所以现在我的结论是,如果行在每个可见列和“不可见”列上都是 100% 相同的,那么它们才被认为是重复的。但现在我实际上完全被难住了,因为我不知道如何解决 Q1 + Q2。

重要的是要知道,我们不应该使用 DISTINCT 或 GROUP BY 来解决这些问题。只有(不同种类的)JOINS、INTERSECT、UNION 和 MINUS。

我想你可以看到我在撰写这篇文章时投入了大量的时间和精力,所以如果你们能帮助我完成这篇文章,我将非常感激。

谢谢。

0 投票
2 回答
203 浏览

database - 自然连接子集分解

对于这个问题,我发现答案是(c)。但我可以举一个例子来证明(c)是不正确的。答案是什么?

设 r 是模式 R = (A, B, C, D) 的关系实例。我们定义r1 = ‘select A,B,C from r'和r2 = ‘select A, D from r'。让s = r1 * r2where * 表示自然连接。鉴于将 r 分解为 r1 和 r2 是有损的,以下哪一项是正确的?

(a) s 是 r 的子集
(b) r U s = r
(c) r 是 s 的子集
(d) r * s = s

如果答案是 (c) ,请考虑以下示例,将 r 有损分解为 r1 和 r2。

表 r

A B C D

1 10 100 1000
2 20 200 1000
3 20 200 1001

表 r1

美国广播公司

1 10 100 2 20 200

表 r2

广告

2 1000
3 1001

表 s(r1 和 r2 的自然连接)

A B C D

2 20 200 1000

答案不是 (c) 。但我也可以给你一个例子,(c)可以是一个答案。答案应该是什么?

0 投票
2 回答
100 浏览

mysql - 自然连接操作只返回mysql数据库中的第一个表

我的数据库中有两张表,一张叫personalfirstteaminfo,第二张叫status-kids

两个表之间的公共列是 player_id

我想做一个连接两个表的查询,并为每一行创建一个年龄列。

现在我已经使用了这个有效的查询——但我只得到了personalfirstteam表中的数据。我没有看到 status-kids 列(即 status 和 kids)

SELECT p.* ,TIMESTAMPDIFF(YEAR,birthday,CURDATE()) as age FROM personalfirstteaminfoas pnatural join (select s.* from status-kidsas s) as T

有任何想法吗?当我尝试这样做时

选择p, s. FROM personalfirstteaminfoas p, status-kidsas swhere p.player_id = s.player_id

它确实返回了我需要的值,但 player_id 列显示了两次。

谢谢你。