将表与其自身作为概念连接

问题描述 投票:0回答:1

我不理解我正在做的视频学习给我的总结。关于为什么我将表与自身连接的解释尚不清楚。我在这方面是全新的,并且在这个概念上一直做得很好。谢谢您的帮助。

我想我会选择更多的列。

join self-join
1个回答
0
投票

这不是一件常见的事情。如果你刚刚开始,我不会担心。

但是根据数据库的排列方式,它可能非常有用。可以使用的一种数据设计模式是将相关数据存储在行而不是列中,如下所示:

Table person_attributes
-----------------------
id   person_id attr_key attr_value
==== ========= ======== ==========
201  51        Hair     Brown
202  51        Eyes     Blue
203  51        Height   175cm
204  52        Hair     Red
205  52        Eyes     Hazel
206  52        Height   163cm

要以单行形式检索人员 51 的属性值,您可以将表连接到其自身。像这样:

SELECT pa1.attr_value as hair
  ,pa2.attr_value as eyes
  ,pa3.attr_value as height
FROM person_attributes pa1
  JOIN person_attributes pa2 on pa1.person_id=pa2.person_id
  JOIN person_attributes pa3 on pa1.person_id=pa3.person_id
WHERE pa1.attr_key='Hair'
  AND pa2.attr_key='Eyes'
  AND pa3.attr_key='Height'
  AND pa1.person_id=51
© www.soinside.com 2019 - 2024. All rights reserved.