server-SQL Server 的一对多关系查询

问题描述

SQL Server 的一对多关系查询

A表和B表是一对多关系,要如何写sql语句实现图中的效果。

解决方案

SQLServer如下

 CREATE TABLE A(
  id int,
  name varchar(20)
);
CREATE TABLE B(
  bid int,
  name varchar(20),
  pid int
);
insert into A(id,name) VALUES(1,'张三');
insert into A(id,name) VALUES(2,'李四');
insert into B(bid,name,PID) VALUES(1,'王五',1);
insert into B(bid,name,PID) VALUES(2,'张飞',1);
insert into B(bid,name,PID) VALUES(3,'钱六',2);

select a.*,r.data from a left join(
SELECT pid, data=STUFF((SELECT ','+name FROM b t WHERE pid=t1.pid FOR XML PATH('')), 1, 1, '')
FROM b t1
GROUP BY pid
) r on a.id=r.pid

解决方案二:

你还是这个存储过程吧,用游标遍历拼接出后两个字段,要么就查出竖表,通过代码组织成你的格式

时间: 2024-08-25 06:50:55

server-SQL Server 的一对多关系查询的相关文章

.NET编程和SQL Server ——Sql Server 与CLR集成 (学习笔记整理-1)

原文:.NET编程和SQL Server --Sql Server 与CLR集成 (学习笔记整理-1) 一.SQL Server 为什么要与CLR集成 1. SQL Server 提供的存储过程.函数等十分有限,经常需要外部的代码来执行一些繁重的移植: 2.与CLR集成可将原本需要独立的程序来实现的功能迁移到SQL Server 内部进行数据操作: 3.T-SQL数据查询语言在返回数据集方面很好,但是除此之外表现不佳.与CLR的集成可解决这一问题: 4..NET的操作代码和执行的速度比T-SQL

请使用PL/SQL来按父子层次关系查询出表的所有数据

有一个数据表(TEST),字段如下: ID  number PARENT_ID number NAME Varchar(20)   请使用PL/SQL来按父子层次关系查询出该表的所有数据     Select * from test a, test b Where a.parent_id = b.id;

sql server...-sql server如何实现16个以上联合主键

问题描述 sql server如何实现16个以上联合主键 现在一个表的联合主键有16个,需要添加一个联合主键,但是sql server最多只能16个主键,怎么能实现17个键的需求? 解决方案 在SQL Server中如何关于修改自增型主键的初始值获取SQL Server 主键有关sql server用int型主键的一些问题

sql server 2008如何根据一个表中数据去查询另一个表的数据?

问题描述 sql server 2008如何根据一个表中数据去查询另一个表的数据? 现在我有三个表,表A有11列,其中有一列用来记录员工的id,一列是记录类型的Id,现在我要查询出表A的所有数据,但同时我要通过员工的id去查询出表B的员工名,通过类型的id,去查询出表C中的类型详情,最后我要得到的数据就是表A中除了员工id和类型id的数据外的9列数据,加上表B的员工名和表C的类型详情,请问这样的SQL语句要如何写? 解决方案 用一个表的数据更新另一个表Sql ServerSQL server中将

如何解决 SQL Server 2000 中的连接问题

server|解决|问题 如何解决 SQL Server 2000 中的连接问题适用于 重要说明:本文包含有关修改注册表的信息.修改注册表之前,一定要备份注册表,并且一定要知道在发生问题时如何还原注册表.有关如何备份.还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 256986 Microsoft Windows 注册表说明 本任务的内容概要 解决连接问题 验证 DNS 设置 验证启用的协议和别名 验证 SQL Server 实例正在正确地侦听 解

SQL Server 2000之日志传送功能

server SQL Server 2000之日志传送功能 - 描述 (1) 角色变更.角色互换.以及监控服务器所在位置     当线上数据库停摆时(可能是计划内维护工作,或是预期外的状况),如果还有备援服务器上的数据库可供存取,您可能会比较安心一点.一个设计良好的日志传送系统(将数据库交易日志文件从主要服务器传送到备援服务器)即可给予您这样的自信心.内建于 SQL Serve 2000 企业板与开发版的 Enterprise Manager 工具程序即支持日志传送功能. 角色变更     将日

配置SQL Server 2000选项

server SQL Server服务器的配置选项属于那种人们了解较少且经常误用的选项.当一个技术支持人员要求你按照某种方式调整一个选项.而另一个技术支持人员却要求你按照另一种完全对立的方式调整同一个选项时,你可能对这些选项的真正含义感到困惑.有关这些选项的资料很缺乏,至少可以说不够详细和清楚.在SQL Server 2000中,Microsoft减少了几个配置选项,让SQL Server动态配置它们,从而减少了几个容易混淆的地方.同时,Microsoft又为SQL Server 2000新增了

SQL Server事务隔离级别详解

SQL Server事务隔离级别详解 标签: SQL SEERVER/MSSQL SERVER/SQL/事务隔离级别选项/设置数据库事务级别 SQL 事务隔离级别 概述      隔离级别用于决定如果控制并发用户如何读写数据的操作,同时对性能也有一定的影响作用. 步骤 事务隔离级别通过影响读操作来间接地影响写操作:可以在回话级别上设置事务隔离级别也可以在查询(表级别)级别上设置事务隔离级别.事务隔离级别总共有6个隔离级别:READ UNCOMMITTED(未提交读,读脏),相当于(NOLOCK)

用COM自动服务扩展SQL Server的功能

server     SQL Server的T-SQL编程语言在数据存储和恢复方面功能强大,但在与SQL Server数据库之外的系统交互方面则功能较弱.然而,我们可以通过SQL Server内置的COM自动操作环境来克服这个限制,SQL Server内置的COM自动操作环境可以使用户在存储过程中自动操作COM对象. 在SQL Server 7.0和SQL Server 6.5中提供了7个扩展的存储过程,可以通过自己开发的或Office等现成的COM对象扩展SQL Server的功能.SQL S