對於Excel導出,我必須爲每個項目添加兩列,其所有「has-reference-to」和「is-referenced-from」項目。結合自引用表中的行
Here is my SQL Fiddle with my tables and my results.
我的表
CREATE TABLE Item (ItemId INT, Title NVARCHAR(100))
INSERT INTO Item VALUES(1, 'Title 1')
INSERT INTO Item VALUES(2, 'Title 2')
INSERT INTO Item VALUES(3, 'Title 3')
INSERT INTO Item VALUES(4, 'Title 4')
INSERT INTO Item VALUES(5, 'Title 5')
CREATE TABLE ItemReference (ReferenceId INT, FromItemId INT, ToItemId INT)
INSERT INTO ItemReference VALUES(1, 1, 2)
INSERT INTO ItemReference VALUES(2, 1, 3)
INSERT INTO ItemReference VALUES(3, 4, 5)
INSERT INTO ItemReference VALUES(4, 5, 1)
兩個FromItemId
和ToItemId
包含從表Item
的ItemId
。
預計輸出
+---------+------------------+--------------------+
| Title | Has reference to | Is referenced from |
+---------+------------------+--------------------+
| Title 1 | Title 2, Title 3 | Title 5 |
+---------+------------------+--------------------+
| Title 2 | | Title 1 |
+---------+------------------+--------------------+
| Title 3 | | Title 1 |
+---------+------------------+--------------------+
| Title 4 | Title 5 | |
+---------+------------------+--------------------+
| Title 5 | Title 1 | Title 4 |
+---------+------------------+--------------------+
我查詢
SELECT item.Title,
ISNULL([Has reference to], '') [Has reference to],
ISNULL([Is referenced from], '') [Is referenced from]
FROM Item item
OUTER APPLY
(
SELECT i.Title + ', '
FROM ItemReference ref
INNER JOIN Item i ON ref.FromItemId = i.ItemId
WHERE ref.FromItemId = item.ItemId
ORDER BY ref.ToItemId DESC
FOR XML PATH('')
) OURT ([Has reference to])
OUTER APPLY
(
SELECT i.Title + ', '
FROM ItemReference ref
INNER JOIN Item i ON ref.ToItemId = i.ItemId
WHERE ref.ToItemId = item.ItemId
ORDER BY ref.FromItemId DESC
FOR XML PATH('')
) OURF ([Is referenced from])
電流輸出
+---------+------------------+--------------------+
| Title | Has reference to | Is referenced from |
+---------+------------------+--------------------+
| Title 1 | Title 1, Title 1 | Title 1 |
+---------+------------------+--------------------+
| Title 2 | | Title 2 |
+---------+------------------+--------------------+
| Title 3 | | Title 3 |
+---------+------------------+--------------------+
| Title 4 | Title 4 | |
+---------+------------------+--------------------+
| Title 5 | Title 5 | Title 5 |
+---------+------------------+--------------------+
由於您可以看到,項目引用的數量與我的預期結果相符,但我無法獲得引用的正確標題。任何人都可以幫助我獲得正確的標題嗎?
在這兩種外部應用中,這不就是標題(不是i.Title)嗎? BTW你的小提琴沒有加載我(可能是我的連接)。 –
對於我來說,SQL小提琴一直很慢/不能工作。無法加載它。也許直接複製/粘貼create/insert語句。 –
@CetinBasoz表'ItemReference'沒有'Title'列... –