问题背景如下:
有两张表
table1
table2
table3
ID |
姓名ID |
爱好ID |
1 |
1 |
1 |
2 |
1 |
2 |
3 |
2 |
1 |
4 |
2 |
3 |
5 |
3 |
2 |
6 |
3 |
3 |
现在我想创建一个视图创建成如下格式:
ID |
姓名 |
爱好 |
1 |
张三 |
篮球、足球 |
2 |
李四 |
篮球、排球 |
3 |
王五 |
足球、排球 |
视图中的“爱好” 是从table2 里爱好的部分和
这里用户和爱好是一对多的关系
在创建视图的时候,需要把一对多的语句写成“XXX,XXX”的格式
视图创建方法
CREATE VIEW [dbo].[view_test]
AS
SELECT table1.*,
GetHobby(table1.id) --GetHobby是数据库自定义的函数
from table1
GetHobby函数的定义:
CREATE FUNCTION [dbo].[GetHobby]
(
@userid int --定义输入用户的ID
)
RETURNS varchar(500) --定义输出类型
AS
BEGIN --创建方法开始
declare @habby varchar(500) --定义变量保存爱好
set @habby ='' -- 赋值
declare habby_cursor CURSOR FORWARD_ONLY FOR --建立游标,根据table3的一对多关系选取出某用户的爱好
SELECT table2.爱好
from table2,table3
where table3.姓名ID=@userid and
table3.爱好ID=table2.爱好
open habby_cursor --打开游标
declare @temp varchar(50) --定义临时变量
FETCH NEXT FROM habby_cursor INTO @temp --进入游标
while @@fetch_status <> -1 --while循环一条一条读游标
begin
select @habby =@habby +@temp+', ' --将从游标读到的信息拼装
FETCH NEXT FROM habby_cursor INTO @temp --进入下一条
end
CLOSE habby_cursor --关闭游标
DEALLOCATE habby_cursor --释放游标
select @habby =substring(@habby ,0,len(@habby )) --去除最后一个逗号
-- Return the result of the function
RETURN @habby
END
视图创建好了之后
select * from view_test
就可以取出我想取的数据了
分享到:
相关推荐
要将单个字符串创建成字符串数组,我们需要了解LabVIEW的基本数据结构和编程方法。以下是一些关于如何在LabVIEW中创建字符串数组的关键知识点: 1. **字符串数组的概念**: 在LabVIEW中,字符串数组是一种数据结构...
TIA 博途中字符串转换相关指令的使用方法是指在 Siemens SIMATIC TIA Portal 中使用的字符串转换相关指令,包括移动和转换字符串指令、字符串和数值相互进行转换指令等。 1. 移动和转换字符串指令 移动和转换字符...
不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。 输入: 每一行包括两个字符串,长度不超过100。 输出: 可能有多组测试数据,对于每组数据, 不借用任何字符串库函数实现无冗余...
1. **字符串连接**:在LabVIEW中,可以使用“连接字符串”函数来将两个或多个字符串组合成一个新的字符串。这个函数接受一个或多个字符串数组作为输入,并返回一个包含所有输入字符串的单一字符串。你可以通过拖拽此...
【配置Sql连接字符串】 在IT领域,配置SQL连接字符串是数据库应用程序中不可或缺的步骤,它允许应用程序连接到特定的数据库服务器以执行SQL语句。连接字符串由一系列键值对组成,这些键值对包含了诸如数据库服务器...
以上就是关于"Java创建字符串类"这一主题的详细阐述,包括`String`类的基本使用、可变字符串类`StringBuilder`和`StringBuffer`,以及相关的操作方法。理解并熟练运用这些知识点对于编写高效且功能丰富的Java程序至...
算法与数据结构(C语言描述) 顺序表两个字符串连接起来,自己手打的,总的来说我感觉算法与数据结构
在不知道连接字符串格式的情况下,可以创建一个 UDL 文件,以获取连接字符串。右键新建一个文本文件,改名为 *.udl,右键打开方式选择 OLE DB Core Services。然后,在提供程序里选择 XXXX OLE DB Provider for ...
字符串连接是编程中的一项基本操作,其目的通常是为了合并两个或多个字符串,从而创建一个新的字符串。在Python中,有多种方法可以实现字符串连接,每种方法都有其特定的应用场景和优缺点。本篇文档将详细介绍在...
C# 中的字符串操作方法是指在 C# 编程语言中对字符串进行操作的各种方法和技术。字符串是使用 string 关键字声明的一个字符数组,字符串对象是“不可变的”,即它们一旦创建就无法更改。 1. 字符串的不可变性 字符...
连接字符串,也称为字符串拼接,是指将两个或更多个字符串合并成一个单一的字符串。这个过程在各种编程语言中都有不同的实现方法,但核心思想是相同的。下面我们将深入探讨连接字符串的相关知识点。 1. **字符串...
在Python中,字符串的连接是一个基本而重要的操作,它允许我们将两个或多个字符串合并成一个单一的字符串。本文将详细介绍Python中字符串连接的多种方法,包括使用加号运算符、格式化字符串、f-strings、join方法等...
相反,如果我们有一系列ASCII值,想要组合成一个字符串,可以逐个将这些值用`chr()`函数转换,然后连接起来。在Python中,可以使用列表推导式和`join()`函数来实现。 ```python # Python示例 ascii_values = [65, ...
本文详细介绍了如何在C语言中实现字符串的循环右移,包括了两种不同的实现方法:一种使用字符串复制函数 `strcpy`,另一种使用内存拷贝函数 `memcpy`。每种方法都有其适用场景,开发者可以根据实际需求选择最适合的...
8. `Concat(string[], string, ...)`:将多个字符串连接成一个新字符串。 9. `Join(string[], separator)`:使用指定的分隔符将字符串数组连接成一个字符串。 三、字符串格式化 C#提供`string.Format()`方法和`$`...
使用Write()方法可以向串口发送字符串或字节数组。例如发送字符串: ```csharp mySerialPort.WriteLine("Hello, world!"); // 发送字符串 ``` 6. 关闭串口: 当通信完成后,记得关闭串口以释放资源: ```csharp ...
纯C语言实现字符串拆分操作,把字符串拆分成字符串数组,然后再输出。 使用sstream方法,作为底层驱动操作实现非常方便。
Matlab 中的字符串拼接是一种常见的操作,用于将多个字符串连接起来形成一个新的字符串。在本文中,我们将介绍 Matlab 中三种拼接字符串的方法,并提供两个示例。 方法 1:使用字符串数组 在 Matlab 中,我们可以...
- 实现这个函数,将两个字符串连接起来: ```cpp std::string ConcatenateStrings(const char* str1, const char* str2) { return std::string(str1) + std::string(str2); } ``` 2. **在VB中调用DLL**: - ...
- Vue.js虽然不直接支持模板字符串,但通过计算属性、方法和插槽机制,我们可以灵活地利用模板字符串来创建动态的视图内容。 - 保持良好的编码习惯和安全意识,避免引入潜在的安全漏洞。 理解并熟练运用这些概念...