相关疑难解决方法(0)

4506
推荐指数
24
解决办法
228万
查看次数

SQL JOIN和不同类型的JOIN

什么是SQL JOIN,什么是不同类型?

sql join

238
推荐指数
5
解决办法
36万
查看次数

SQL Server中左连接和右连接之间的区别

我知道SQL Server中的连接.

例如.Table1,Table2有两个表.

他们的桌子结构如下.

create table Table1 (id int, Name varchar (10))

create table Table2 (id int, Name varchar (10))
Run Code Online (Sandbox Code Playgroud)

表1数据如下:

    Id     Name     
    -------------
    1      A        
    2      B    
Run Code Online (Sandbox Code Playgroud)

表2数据如下:

    Id     Name     
    -------------
    1      A        
    2      B 
    3      C
Run Code Online (Sandbox Code Playgroud)

如果我执行下面提到的两个SQL语句,则两个输出都是相同的

select *
from Table1
  left join Table2 on Table1.id = Table2.id

select *
from Table2
  right join Table1 on Table1.id = Table2.id
Run Code Online (Sandbox Code Playgroud)

请解释上述SQL语句中左右连接的区别.

sql sql-server join left-join right-join

218
推荐指数
7
解决办法
29万
查看次数

交叉连接有什么用途?

交叉连接在两组元组上执行笛卡尔积.

SELECT *
FROM Table1
CROSS JOIN Table2
Run Code Online (Sandbox Code Playgroud)

哪种情况下这样的SQL操作特别有用?

sql database join relational-database

97
推荐指数
5
解决办法
6万
查看次数

是否有任何经验法则可以根据人类可读的描述构建 SQL 查询?

每当我们面前有任何查询描述时,我们都会尝试应用启发式和头脑风暴来构建查询。

是否有任何系统的分步或数学方法可以根据给定的人类可读描述构建 SQL 查询?

例如,如何确定 SQL 查询是否需要联接而不是子查询、是否需要 group by、是否需要 IN 子句等等。

例如,任何研究数字电子学的人都会知道卡诺图或奎因·麦克劳斯基方法等方法。这些是简化数字逻辑的一些系统方法。

是否有类似这样的方法来手动分析sql查询以避免每次头脑风暴?

sql database heuristics relational-database human-readable

5
推荐指数
1
解决办法
2323
查看次数

显式JOINs与隐式连接?

我的数据库教授告诉我们使用:

SELECT A.a1, B.b1 FROM A, B WHERE A.a2 = B.b2;
Run Code Online (Sandbox Code Playgroud)

而不是:

SELECT A.a1, B.b1 FROM A INNER JOIN B ON A.a2 = B.b2;
Run Code Online (Sandbox Code Playgroud)

据推测,Oracle不喜欢JOIN-Syntaxes,因为这些JOIN语法比笛卡尔积的WHERE限制更难优化.

我无法想象为什么会出现这种情况.唯一的性能问题可能是解析器需要更多地解析几个字符.但在我眼里,这一点可以忽略不计.

我发现了这个Stack Overflow问题:

这篇文章在Oracle文档中:https://docs.oracle.com/cd/B19306_01/server.102/b14200/queries006.htm

Oracle建议您使用FROM子句OUTER JOIN语法而不是Oracle join运算符.

有人可以通过链接向我提供Oracle的最新建议.因为她不承认StackOverflow(这里可以回答所有人),10g文档在这里是过时的.

如果我错了,Oracle真的不喜欢JOINS现在比那还好,但是我找不到文章.我只是想知道谁是对的.

非常感谢能帮助我的每个人!

database oracle performance join

5
推荐指数
1
解决办法
1436
查看次数

如何从另一个 SQL 表中获取两个不同列的匹配数据:内连接和/或联合?

我在 MS Access 中有两个表,用于跟踪班级辅导员和他们辅导的班级。这两个表的结构如下:

tbl_促进者

facilID -> a unique autonumber to keep track of individual teachers
facilLname -> the Last name of the facilitator
facilFname -> the First name of the facilitator
Run Code Online (Sandbox Code Playgroud)

tbl_facilitatorClasses

classID -> a unique autonumber to keep track of individual classes
className -> the name of the class (science, math, etc)
primeFacil -> the facilID from the first table of a teacher who is primary facilitator
secondFacil -> the facilID  from the first table of another teacher …
Run Code Online (Sandbox Code Playgroud)

sql union ms-access inner-join self-join

3
推荐指数
1
解决办法
1140
查看次数

CROSS JOIN 和一个 FROM 中的多个表有什么区别?

有什么不同?

SELECT a.name, b.name
FROM a, b;

SELECT a.name, b.name
FROM a
CROSS JOIN b;
Run Code Online (Sandbox Code Playgroud)

如果没有区别那为什么两者都存在呢?

sql inner-join cross-join

3
推荐指数
1
解决办法
2168
查看次数

自然连接的维恩图

我一直在尝试完全理解 sql 连接的概念,维恩图在这方面帮助了我很多。我发现它们适用于所有类型的连接,但不适用于自然连接。

自然连接的维恩图是什么样子的?

sql database join natural-join venn-diagram

3
推荐指数
1
解决办法
1771
查看次数

SQL Server查询返回太多记录

我的SQL Server数据库中有3个表.

它们链接在一起,如图所示(线条连接到图片中的右侧行)

ER模型

我有一个查询,它应该返回所有补偿tblreparations信息,其中包含有关修复内容的一些信息,但它会返回3次修复,一次为客户端(荷兰语中的klant)分配给它的每台笔记本电脑,而补偿表(荷兰语的修理)laptopID每行只包含一个

这是查询:

SELECT AankopenReparaties.Id, 
       AankopenReparaties.KlantenId, 
       AankopenReparaties.actietype, 
       AankopenReparaties.voorwerptype, 
       laptopscomputers.merk, 
       laptopscomputers.model, 
       laptopscomputers.info, 
       AankopenReparaties.info, 
       AankopenReparaties.Prijs, 
       AankopenReparaties.lopend 
FROM AankopenReparaties, laptopscomputers 
WHERE (aankopenreparaties.lopend = 'lopend');
Run Code Online (Sandbox Code Playgroud)

它返回这个

查询结果

它应该只有一行,因为赔偿表(aankopenreparaties)只包含一行一个 laptopID

有谁知道如何解决这一问题?

请帮助,因为它应尽快修复(这是学校的任务)

sql database sql-server sql-server-2008

1
推荐指数
1
解决办法
5333
查看次数

仅按人名过滤

我试图过滤我的结果,只显示一个住在特定城市酒店的人的名字。到目前为止我所拥有的是

select guestName
from Guest
join Hotels on hotelNo=1
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,结果页面会列出数据库中的每个来宾名称,而不是留在hotelNo1 中的名称。

sql sql-server join where-clause

1
推荐指数
1
解决办法
94
查看次数

如何在Oracle SQL中进行无交叉交叉连接

我有两个桌子,旅馆和兴趣点。我想找出每家酒店与每种兴趣之间的距离。我尝试使用CROSS JOIN,但是老板告诉我不要使用CROSS JOIN。还有其他办法吗?隐式联接和ON 1 = 1也不允许。有人告诉我要使用联接和方括号,但我不了解如何在不使用交叉联接的情况下执行交叉联接。我正在使用oracle sql

sql oracle join

0
推荐指数
1
解决办法
79
查看次数

CROSS JOIN 和 INNER JOIN 有什么区别

CROSS JOIN 和 INNER JOIN 有什么区别?IE

table 1
+ID   +NAME + LAST__NAME
+-----+-----+-----------
+1    +John + Doe
+2    +Phil + Smith
+3    +Jane + Peterson


table2

+ID+Department
+--+----------
+1 + TI
+2 + Sales
+3 + TI
Run Code Online (Sandbox Code Playgroud)
SELECT *
FROM table1
INNER JOIN table2
ON table1.id=table2.id;

SELECT *
FROM table1
CROSS JOIN table2
Run Code Online (Sandbox Code Playgroud)

我想知道结果之间有什么区别

mysql sql postgresql

-7
推荐指数
1
解决办法
7785
查看次数