Sql server 将所有行与同一表上的其他行匹配的sql查询
我有一张桌子放着我的产品和服务。我希望将每种产品与我的服务相匹配,然后根据我的产品为我的服务指定基本价格 我的桌子如下Sql server 将所有行与同一表上的其他行匹配的sql查询,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一张桌子放着我的产品和服务。我希望将每种产品与我的服务相匹配,然后根据我的产品为我的服务指定基本价格 我的桌子如下 ID TypeID Title ========================= 1 1 Product1 2 1 Product2 3 1 Product3 4 2 Service1 5 2 Service2 6 2 Service3 我想把这张桌子还回去 ProductID ServiceID Product
ID TypeID Title
=========================
1 1 Product1
2 1 Product2
3 1 Product3
4 2 Service1
5 2 Service2
6 2 Service3
我想把这张桌子还回去
ProductID ServiceID ProductTitle ServiceTitle
=========================================================
1 4 Product1 Service1
1 5 Product1 Service2
1 6 Product1 Service3
2 4 Product2 Service1
2 5 Product2 Service2
2 6 Product2 Service3
3 4 Product3 Service1
3 5 Product3 Service2
3 6 Product3 Service3
如何使用Ms SQL 2008做到这一点???试试以下方法:
SELECT
P.ID ProductID, S.ID ServiceID, P.Title ProductTitle, S.Title ServiceTitle
FROM
(SELECT ID, Title
FROM tbl
WHERE TypeID = 1) P
CROSS JOIN
(SELECT ID, Title
FROM tbl
WHERE TypeID = 2) S
ORDER BY P.ID, S.ID
交叉联接
返回两个表的笛卡尔乘积
SELECT a.ID ProductID,
a.Title ProductTitle,
b.ID ServiceID,
b.Title ServiceTitle
FROM tableName a
CROSS JOIN tableName b
WHERE a.TypeID = 1 AND
b.TypeID = 2
ORDER BY a.ID, b.ID
以下查询可能对您有所帮助:
SELECT Product.ProductID , Product.ProductTitle , ProductType.Title
FROM dbo.Product INNER JOIN dbo.ProductType
ON Product.ProductTypeID = ProductType.ID
您可能需要一个join语句,但是如果没有第二个表,我们就不能给您一个示例