我在理解sql中的连接时遇到了麻烦,并且遇到了这个我认为可能对我有用的图像.问题是我不完全理解它.例如,图像右上角的连接,它将整个B圆圈的颜色设置为红色,但只有A的重叠.图像使得它看起来像圆圈B是sql语句的主要焦点,但是sql语句本身,从A开始(从A中选择,加入B),向我传达了相反的印象,即A将成为sql语句的焦点.
同样,下面的图像只包含来自B圈的数据,那么为什么在连接语句中包含A呢?
问题:从右上角顺时针工作并在中心完成,有人可以提供有关每个sql图像表示的更多信息,解释
a)为什么在每种情况下都需要连接(例如,特别是在没有数据来自A或B的情况下,即只有A或B而不是两者都被着色的情况)
b)以及任何其他细节可以澄清为什么图像是sql的良好表示

我不理解左外连接,右外连接的概念,或者我们为什么需要使用连接!我正在努力解决的问题和我正在处理的表格在这里:链接
问题3(b)
在SQL中构造一个命令来解决以下查询,解释为什么必须使用(外部)连接方法.[5 Marks]"查找每位工作人员及其受抚养配偶的姓名,如果有的话"
问题3(c) -
使用(i)join方法和(ii)子查询方法在SQL中构造一个命令来解决以下查询.[10 Marks]"查找在计算机化项目上工作超过20小时的每位员工的身份名称"
有人可以简单地向我解释一下吗?
内外连接的区别.我正在使用两个表,并希望从两个表中获取数据,所以我们应该使用哪种类型的连接,我们可以解决我们的问题
很容易理解为什么左外连接不是可交换的,但是我在理解它们是否是关联时遇到了一些麻烦.一些在线消息来源表示他们不是,但我没有设法说服自己这是事实.
假设我们有三个表:A,B和C.
设A包含两列,ID和B_ID,其中ID是表A的主键,B_ID是对应于表B的主键的外键.
设B包含两列,ID和C_ID,其中ID是表B的主键,C_ID是对应于表C的主键的外键.
设C包含两列,ID和VALUE,其中ID是表C的主键,VALUE只包含一些任意值.
那不(A left outer join B) left outer join C应该等于A left outer join (B left outer join C)?
如何在不使用JOIN关键字的情况下实现SQL连接?
这不是必要的,但我认为通过这样做我可以更好地理解联接实际上做了什么.
我有一张桌子partenaire.partenaire可能有一个或多个地址.当然,一个地址可能"属于"不止一个partenaire.所以,我有3个表:partenaire,partenaire_adresse和adresse.地址只有一个镇(ville法语)所以我id_ville在表中有一个外键addresse.
SELECT
p.nom,
v.nom, v.id_region as id_r, v.id_departement as id_p,
r.description as region
FROM partenaire p
JOIN partenaire_adresse pa
ON pa.id_partenaire=p.id
JOIN adresse a
ON a.id=pa.id_adresse
JOIN ville v
ON v.id=a.id_ville
JOIN region r
ON v.id_region=r.id
LIMIT 4;
Run Code Online (Sandbox Code Playgroud)
这给了我那些结果:
+----------------------------+-------------+------+------+--------+
| nom | nom | id_r | id_p | region |
+----------------------------+-------------+------+------+--------+
| Ferme Auberge Christlesgut | Breitenbach | 1 | 2 | Alsace |
| …Run Code Online (Sandbox Code Playgroud) 我理解内部和外部连接的工作.但在这种情况下,内在/外在的含义是什么?内联的内心是什么?外连接的外部是什么?
最好的问候,维沙尔
今天我尝试了一些更复杂的MySQL查询,我注意到MySQL的LEFT JOIN不能与WHERE子句一起使用.我的意思是,它确实会返回一些记录,但它不会返回右侧为空的记录.
例如,假设我们需要表格:
albums ; albums_rap id artist title tracks ; id artist title rank ---- -------- ---------- --------------- ; ---- --------- ----- -------------- 1 John Doe Mix CD 20 ; 3 Mark CD #7 15 2 Mark CD #7 35 ;
当我运行此查询时:
SELECT
t1.artist as artist,
t1.title as title,
t1.tracks as tracks,
t2.rank as rank,
FROM
albums as t1
LEFT JOIN
albums_rap as t2
ON
t1.artist LIKE t2.artist
AND
t1.title LIKE t2.title
WHERE
t2.rank != 17
Run Code Online (Sandbox Code Playgroud)
我明白了:
artist title …
我想从 返回所有行biometrics,如果 JOIN 存在,则获取额外的数据。但是,我当前的查询仅在用户 ID 匹配时返回行。
我该如何解决这个问题,以便它返回所有生物特征行,以及来自 JOIN 的额外数据(如果存在)?
SELECT b.id as id, g.date
FROM `biometrics` as b
INNER JOIN `users goals` as g ON biometricid = b.id and userid = $user->id
Run Code Online (Sandbox Code Playgroud) 我有下表的值
CREATE TABLE #tmpEmployee(ID int, EmpName varchar(50), EmpBossID int)
insert into #tmpEmployee values ( 1, 'Abhijit', 2);
insert into #tmpEmployee values ( 2, 'Haris', 3);
insert into #tmpEmployee values ( 3, 'Sanal', 0);
Run Code Online (Sandbox Code Playgroud)
现在我希望结果如下
ID EmpName BossName
1 Abhijit Haris
2 Haris Sanal
Run Code Online (Sandbox Code Playgroud)
所以我写了以下查询.
select E1.ID,E1.EmpName, E.EmpName as BossName from #tmpEmployee E inner join #tmpEmployee E1 on E1.EmpBossID=E.ID.
Run Code Online (Sandbox Code Playgroud)
但问题是第三名员工(Sanal)没有老板.所以我想要这个确切的结果:
ID EmpName BossName
1 Abhijit Haris
2 Haris Sanal
3 Sanal Null
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
sql ×10
join ×7
mysql ×4
left-join ×1
mysqli ×1
outer-join ×1
php ×1
set-theory ×1
t-sql ×1
where ×1