Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在单独的表中显示相互链接的数据_Sql_Sql Server - Fatal编程技术网

Sql 在单独的表中显示相互链接的数据

Sql 在单独的表中显示相互链接的数据,sql,sql-server,Sql,Sql Server,我是个新手,如果我没有以最好的方式问这个问题,我向你道歉。 假设我有两个表:一个叫做catcolors,另一个叫做Cats id cat_name -- ---- 1 Jimmy 2 Shadow 3 Snowball 4 Lucky catcolors id colour spots -- ----- ----- 1 brown Yes 2 black No 3 white No 4

我是个新手,如果我没有以最好的方式问这个问题,我向你道歉。 假设我有两个表:一个叫做
catcolors
,另一个叫做
Cats

  id cat_name   
  -- ----     
  1  Jimmy 
  2  Shadow 
  3  Snowball   
  4  Lucky
catcolors

  id colour  spots
  -- -----   -----  
  1  brown   Yes
  2  black   No
  3  white   No
  4  orange  Yes
Cats

  id cat_name   
  -- ----     
  1  Jimmy 
  2  Shadow 
  3  Snowball   
  4  Lucky
因此catcolors表中的id将是主键,列colors的值对应于id编号。
在第二个表Cats中,我们有cat_名称以及id,这将是一个外键(如果我错了,请纠正我)

我想组成一个查询,在第二个表Cats中将id显示为color,而第一个表catcolors中的数据仍将对应于正确的cat
(即猫色中的id1对应于棕色和斑点,但我目前并不关心斑点下的值。id1对应于吉米。
当我查询时,我想在第二个表中将id1显示为棕色,以显示id所对应的cat\u名称,以此类推。)

我希望这是有道理的,请问我是否需要澄清。
我只想运行一条语句来检索和汇总这些数据,而不是修改或更改任何表。

我想您只是在寻找一个简单的联接:

SELECT CatColours.id, Cats.cat_name, CatColours.colour
FROM CatColours
INNER JOIN Cats ON CatColours.id = Cats.id

有关联接的详细信息,请参见:


老实说,我会改变FK关系,让猫(有它们的名字)成为父表。

试试看

 SELECT C.id, C.cat_name, CC.colour, CC.spots
 FROM cats C
 INNER JOIN CatColours CC ON
 C.id = CC.id

根据您的要求,Cats表是主表,CatsColor是关联表。Cats.id是Cats的主键,CatsColor.id将是引用表Cats中Cats.id的外键

查询将是

选择cc.color、c.cat\U名称 来自猫c
如果只想从现有表中获取数据,可以使用已发布的任何查询

请注意,你们的桌子组织得不是很好

你将如何代表一只名叫吉米的猫,它是棕色的,没有斑点? 另外,请注意,您的CatColors表包含冗余数据,因为cat可以有一种带有我们的无斑点的颜色,所以您输入的dta比您需要的要多

我建议你像这样整理桌子

猫咪

id  color

1   brown

2   white

3   black

4   organge

5   gray....

这是一个很好的教程,您可以阅读有关表规范化的内容,它将为您提供一些关于这方面的理论背景