Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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,好的,我有两张桌子。一个表表1包含一列Books_Owned_ID,它以1,3,7的形式存储一系列数字。我有另一个表2,它在一列中存储图书名称,在另一列中存储图书ID 我想做的是创建一个SQL代码,它将从我拥有的书籍中获取数字,并在新列中显示这些书籍的名称。像这样: |New Column | Book 1 Name Book 2 Name Book 3 Name 我无法理解这一点,这很简单,但我看到的所有线索都非常混乱 表1包含以下列: |First_Name| Last_Name|

好的,我有两张桌子。一个表表1包含一列Books_Owned_ID,它以1,3,7的形式存储一系列数字。我有另一个表2,它在一列中存储图书名称,在另一列中存储图书ID

我想做的是创建一个SQL代码,它将从我拥有的书籍中获取数字,并在新列中显示这些书籍的名称。像这样:

|New Column  |
 Book 1 Name
 Book 2 Name
 Book 3 Name
我无法理解这一点,这很简单,但我看到的所有线索都非常混乱

表1包含以下列:

|First_Name| Last_Name| Books_Owned_ID |
|Book_Name|Book_ID|
表2包含以下列:

|First_Name| Last_Name| Books_Owned_ID |
|Book_Name|Book_ID|

你需要做一个内部连接

编辑

我将努力使列逗号拆分工作正常。这不会有太多的额外费用

编辑2,然后可以执行以下操作:

SELECT Book_Name FROM Table2 
WHERE Book_ID IN(SELECT FN_ListToTable(',',Table1.Books_Owned_ID) FROM Table1 s)

你需要做一个内部连接

编辑

我将努力使列逗号拆分工作正常。这不会有太多的额外费用

编辑2,然后可以执行以下操作:

SELECT Book_Name FROM Table2 
WHERE Book_ID IN(SELECT FN_ListToTable(',',Table1.Books_Owned_ID) FROM Table1 s)

您需要一个函数,它接受逗号分隔的列表并返回一个表。这是一个缓慢的、从根本上说是一个坏主意。实际上,所有这些都是将这种方式转换为我下面描述的数据模型。有关这方面的示例,请参见专业业余爱好者的答案

如果您刚刚开始更改数据模型。制作一个链接表。像这样:

好的,我有两张桌子。一个表表1包含一列Books_Owned_ID,它以1,3,7的形式存储一系列数字。我有另一个表2,它在一列中存储图书名称,在另一列中存储图书ID

我想做的是创建一个SQL代码,它将从我拥有的书籍中获取数字,并在新列中显示这些书籍的名称。像这样:

人员表

 |First_Name| Last_Name| Person_ID |
书桌

 |Book_Name|Book_ID|
 |PersonID|BookID|
人事登记表

 |Book_Name|Book_ID|
 |PersonID|BookID|

此表中每个人可以有多行。

您需要一个函数,该函数采用逗号分隔的列表并返回一个表。这是一个缓慢的、从根本上说是一个坏主意。实际上,所有这些都是将这种方式转换为我下面描述的数据模型。有关这方面的示例,请参见专业业余爱好者的答案

如果您刚刚开始更改数据模型。制作一个链接表。像这样:

好的,我有两张桌子。一个表表1包含一列Books_Owned_ID,它以1,3,7的形式存储一系列数字。我有另一个表2,它在一列中存储图书名称,在另一列中存储图书ID

我想做的是创建一个SQL代码,它将从我拥有的书籍中获取数字,并在新列中显示这些书籍的名称。像这样:

人员表

 |First_Name| Last_Name| Person_ID |
书桌

 |Book_Name|Book_ID|
 |PersonID|BookID|
人事登记表

 |Book_Name|Book_ID|
 |PersonID|BookID|

此表中每个人可以有多行。

此表的核心是数据规范化。。。每个事实只存储一次,因此具有权威性。您还应该养成在任何字段中只存储一个事实的习惯

所以,想象一下下面的表格布局

Books
    Id, Name, Description

Users
    Id, Username, EmailAddress, PasswordHash, etc....

BooksOwned
    UserId, BookId
因此,如果一个用户拥有多本书,那么BooksOwned表中将有多个条目

指示用户1拥有书籍1到3

这样做的原因是它使将来的查询更加容易。您还可以将BookId视为一个整数,而不是包含列表的字符串,这样您就不必担心在执行查询时需要对字符串进行操作

下面将返回Id为1的用户拥有的所有书籍的名称


其核心是数据规范化。。。每个事实只存储一次,因此具有权威性。您还应该养成在任何字段中只存储一个事实的习惯

所以,想象一下下面的表格布局

Books
    Id, Name, Description

Users
    Id, Username, EmailAddress, PasswordHash, etc....

BooksOwned
    UserId, BookId
因此,如果一个用户拥有多本书,那么BooksOwned表中将有多个条目

指示用户1拥有书籍1到3

这样做的原因是它使将来的查询更加容易。您还可以将BookId视为一个整数,而不是包含列表的字符串,这样您就不必担心在执行查询时需要对字符串进行操作

下面将返回Id为1的用户拥有的所有书籍的名称


您使用的数据库是什么?标签Books\u Owned\u Id和Book\u Id是否相同?如果是这样的话,您可以加入到它们中。Books_Owned_ID中的值真的是一个以逗号分隔的Book_ID列表吗?如果是这样,那就是你遇到麻烦的原因。您需要一个连接表1和表2的第三个1对多表。我正在使用MS SQL Server和MS Management Studio。等等,不,嗯。。。这是数据结构中的一个设计问题。你可能想要三张桌子而不是两张:人、书和书。当前的设计将来可能会给您带来困难。您使用的数据库是什么?Books_Owned_Id和Book_Id标签是否相同?如果是这样的话,你可以加入到它们上面。图书中的值是否真的是一个逗号分隔的Boo列表
你的身份证?如果是这样,那就是你遇到麻烦的原因。您需要一个连接表1和表2的第三个1对多表。我正在使用MS SQL Server和MS Management Studio。等等,不,嗯。。。这是数据结构中的一个设计问题。你可能想要三张桌子而不是两张:人、书和书。当前的设计可能会在将来给您带来困难。但这不会给您一个以逗号分隔的书名列表。更新了前面SO问题的示例答案,这些问题拆分了逗号分隔的字段并可以使用。如果他想将这些结果转换回逗号列表,他可以在此处使用XML作为我的答案:但是这不会给你一个以逗号分隔的书名列表。更新了前面SO问题的示例答案,这些问题拆分了逗号分隔的字段并可以使用。如果他想将这些结果转换回逗号列表,他可以使用XML作为我的答案:正是我所指的!谢谢你的帮助@BasicMy-cellose-能找到一个想要理解的人总是很好的。希望将来能见到你。正是我所说的!谢谢你的帮助@BasicMy-cellose-能找到一个想要理解的人总是很好的。希望将来能见到你。