0

我有一张桌子来存放我的产品和服务。我想将每个产品与我的服务相匹配,而不是根据我的产品为我的服务分配基本价格。

我的表如下

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 做到这一点?

4

3 回答 3

1

尝试这个:

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
于 2013-09-18T19:56:07.607 回答
1

CROSS JOIN返回两个表的笛卡尔积。

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
于 2013-09-18T19:57:11.147 回答
0

以下查询可能对您有所帮助:

SELECT Product.ProductID , Product.ProductTitle , ProductType.Title
FROM dbo.Product INNER JOIN dbo.ProductType 
ON Product.ProductTypeID = ProductType.ID
于 2013-09-18T19:58:34.153 回答