关于sql语句一对多 生成一条语句之后,怎么实现查询

时间:2022-04-15 01:02:39

SELECT 
    T1.*,
    (SELECT   T2.PartName+',' 
     FROM wf_work_items T2
     WHERE T1.ProcID=T2.ProcID
     FOR XML PATH('')
    ) as PartName ,
(SELECT   T2.PartDeptName+'' 
     FROM wf_work_items T2
     WHERE T1.ProcID=T2.ProcID
     FOR XML PATH('')
    ) as PartDeptName
FROM Con_Contract  T1  
 
 
是这样的  我有两张表  然后一对多之后生成了一条语句  然后我现在想查询PartName 和 PartDeptName 应该怎么写  求解~~ 
T _ T 

11 个解决方案

#1


SELECT 
    T1.*,
    T2.PartName,
T2.PartDeptName
FROM Con_Contract  T1
join wf_work_items T2 on T1.ProcID=T2.ProcID

#2


引用 1 楼 Landa_Ran 的回复:
SELECT 
    T1.*,
    T2.PartName,
T2.PartDeptName
FROM Con_Contract  T1
join wf_work_items T2 on T1.ProcID=T2.ProcID


哥  这种简单的内联  有一个问题就在于会生成很多很多重复的数据    我要的是T1 的主键  对应 T2的PartName(多个数据对应一一个主键) 和PartDeptName 
但只能生成一条   如图:
现在我已经查出来了   就想怎么实现着PartName 和 PartDeptName两个的查询 
关于sql语句一对多 生成一条语句之后,怎么实现查询

#3


最外层的 SELECT 后面加个 DISTINCT 关键字就可以了。

#4




引用 3 楼 Tiger_Zhao 的回复:
最外层的 SELECT 后面加个 DISTINCT 关键字就可以了。


[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/3.gif]

[/img] 只能说  你还是太图样了。。。

功能是这样  我有两张表  一张表数据多  一张表数据少
table1              table2
T1                        T2
 a                          a
 b                          a
                             a
                             b
                             b

我想查出来table1的数据只有一条   但对应的table2的数据要全部显示

比如说   t1的a对应t2的aaa  这样的一条语句
 
我查出来的数据是这样的  我只想知道怎么查询  

#5


你把 #2的数据和代码贴出来,看我来DISTINCT。

#6


引用 5 楼 Tiger_Zhao 的回复:
你把 #2的数据和代码贴出来,看我来DISTINCT。



CREATE TABLE #T1
(
T1 int primary key
)
INSERT INTO #T1 VALUES(1),(2)
 
CREATE TABLE #T2
(
Tpname VARCHAR(20),
Tpdname VARCHAR(20)
)
INSERT INTO #T2 VALUES('1','c'),('1','c'),('1','c'),('1','c'),('2','d'),('2','d'),('2','d'),('2','d')


#7


别扯蛋!
我说 DISTINCT 的时候还只有 #2 的代码和数据。

#8


引用 7 楼 Tiger_Zhao 的回复:
别扯蛋!
我说 DISTINCT 的时候还只有 #2 的代码和数据。


什么鬼   觉得你没懂我的意思     你看图  我查出来的数据 是一个主键对应多个名字  和部门的 

关于sql语句一对多 生成一条语句之后,怎么实现查询

而且  我现在只要查询   
 
你如果查询了出来  贴代码 好不?

#9




select *   from ( SELECT 
    T1.BaseContractId,
    (SELECT   T2.PartName+',' 
     FROM wf_work_items T2
     WHERE T1.ProcID=T2.ProcID
     FOR XML PATH('')
    ) as PartName ,
(SELECT   T2.PartDeptName+'' 
     FROM wf_work_items T2
     WHERE T1.ProcID=T2.ProcID
     FOR XML PATH('')
    ) as PartDeptName

FROM Con_Contract  T1) T1  where T1.PartName like '%王%' and T1.PartDeptName like '%道%'


我自己搞定了~~   

#10


关于sql语句一对多 生成一条语句之后,怎么实现查询
原来这不是你的查询和结果啊  关于sql语句一对多 生成一条语句之后,怎么实现查询关于sql语句一对多 生成一条语句之后,怎么实现查询
和你比起来我得普通人正是 TOO YOUNG TOO SIMPLE 了 关于sql语句一对多 生成一条语句之后,怎么实现查询关于sql语句一对多 生成一条语句之后,怎么实现查询关于sql语句一对多 生成一条语句之后,怎么实现查询

#11


原来这不是你的查询和结果啊  关于sql语句一对多 生成一条语句之后,怎么实现查询
这样异次元的表达方式果然 TOO DECREPIT TOO GUILE  关于sql语句一对多 生成一条语句之后,怎么实现查询关于sql语句一对多 生成一条语句之后,怎么实现查询
和你比起来我得普通人正是 TOO YOUNG TOO SIMPLE 了 关于sql语句一对多 生成一条语句之后,怎么实现查询关于sql语句一对多 生成一条语句之后,怎么实现查询关于sql语句一对多 生成一条语句之后,怎么实现查询

#1


SELECT 
    T1.*,
    T2.PartName,
T2.PartDeptName
FROM Con_Contract  T1
join wf_work_items T2 on T1.ProcID=T2.ProcID

#2


引用 1 楼 Landa_Ran 的回复:
SELECT 
    T1.*,
    T2.PartName,
T2.PartDeptName
FROM Con_Contract  T1
join wf_work_items T2 on T1.ProcID=T2.ProcID


哥  这种简单的内联  有一个问题就在于会生成很多很多重复的数据    我要的是T1 的主键  对应 T2的PartName(多个数据对应一一个主键) 和PartDeptName 
但只能生成一条   如图:
现在我已经查出来了   就想怎么实现着PartName 和 PartDeptName两个的查询 
关于sql语句一对多 生成一条语句之后,怎么实现查询

#3


最外层的 SELECT 后面加个 DISTINCT 关键字就可以了。

#4




引用 3 楼 Tiger_Zhao 的回复:
最外层的 SELECT 后面加个 DISTINCT 关键字就可以了。


[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/3.gif]

[/img] 只能说  你还是太图样了。。。

功能是这样  我有两张表  一张表数据多  一张表数据少
table1              table2
T1                        T2
 a                          a
 b                          a
                             a
                             b
                             b

我想查出来table1的数据只有一条   但对应的table2的数据要全部显示

比如说   t1的a对应t2的aaa  这样的一条语句
 
我查出来的数据是这样的  我只想知道怎么查询  

#5


你把 #2的数据和代码贴出来,看我来DISTINCT。

#6


引用 5 楼 Tiger_Zhao 的回复:
你把 #2的数据和代码贴出来,看我来DISTINCT。



CREATE TABLE #T1
(
T1 int primary key
)
INSERT INTO #T1 VALUES(1),(2)
 
CREATE TABLE #T2
(
Tpname VARCHAR(20),
Tpdname VARCHAR(20)
)
INSERT INTO #T2 VALUES('1','c'),('1','c'),('1','c'),('1','c'),('2','d'),('2','d'),('2','d'),('2','d')


#7


别扯蛋!
我说 DISTINCT 的时候还只有 #2 的代码和数据。

#8


引用 7 楼 Tiger_Zhao 的回复:
别扯蛋!
我说 DISTINCT 的时候还只有 #2 的代码和数据。


什么鬼   觉得你没懂我的意思     你看图  我查出来的数据 是一个主键对应多个名字  和部门的 

关于sql语句一对多 生成一条语句之后,怎么实现查询

而且  我现在只要查询   
 
你如果查询了出来  贴代码 好不?

#9




select *   from ( SELECT 
    T1.BaseContractId,
    (SELECT   T2.PartName+',' 
     FROM wf_work_items T2
     WHERE T1.ProcID=T2.ProcID
     FOR XML PATH('')
    ) as PartName ,
(SELECT   T2.PartDeptName+'' 
     FROM wf_work_items T2
     WHERE T1.ProcID=T2.ProcID
     FOR XML PATH('')
    ) as PartDeptName

FROM Con_Contract  T1) T1  where T1.PartName like '%王%' and T1.PartDeptName like '%道%'


我自己搞定了~~   

#10


关于sql语句一对多 生成一条语句之后,怎么实现查询
原来这不是你的查询和结果啊  关于sql语句一对多 生成一条语句之后,怎么实现查询关于sql语句一对多 生成一条语句之后,怎么实现查询
和你比起来我得普通人正是 TOO YOUNG TOO SIMPLE 了 关于sql语句一对多 生成一条语句之后,怎么实现查询关于sql语句一对多 生成一条语句之后,怎么实现查询关于sql语句一对多 生成一条语句之后,怎么实现查询

#11


原来这不是你的查询和结果啊  关于sql语句一对多 生成一条语句之后,怎么实现查询
这样异次元的表达方式果然 TOO DECREPIT TOO GUILE  关于sql语句一对多 生成一条语句之后,怎么实现查询关于sql语句一对多 生成一条语句之后,怎么实现查询
和你比起来我得普通人正是 TOO YOUNG TOO SIMPLE 了 关于sql语句一对多 生成一条语句之后,怎么实现查询关于sql语句一对多 生成一条语句之后,怎么实现查询关于sql语句一对多 生成一条语句之后,怎么实现查询