2015-11-04 47 views
1

我需要從DB中選擇更多值並將其放入數據集中的一個字段中。從DB中選擇更多值到DataSet中的一個字段中

我在delphi中有方法,它有輸入參數TDataSet並將數據集中的值導出到Excel。

我想要導出的字段之一是用其他表格中的「,」分隔的多個值。

我有這個表:

促銷

ID_Katalog | atribut_1 
---------------------- 
1   | xxx 

KATALOGxPOLOZKA

ID_POLOZKA | ID_KATALOG 
----------------------- 
1   | 1 
2   | 1 
3   | 1 

我需要這樣的結果:

ID_Katalog | atribut_1 | polozka 
-------------------------------- 
1   | xxx  | 1, 2, 3 

有沒有什麼可能的方法,我該怎麼做呢?

我試過子查詢,但子查詢不能返回多於1的值。

P.S. :使用im - 德爾福XE6,ADODB,MS SQL-SERVER ....結果必須TDataSet的

+0

創建正常查詢 – Zam

+0

哪個查詢有那個結果?如何在一個字段中選擇以「,」分隔的更多值? – KubitaS

+2

提到這個問題http://stackoverflow.com/questions/21760969/multiple-rows-to-one-comma-separated-value –

回答

2

您可以使用FOR XML子句中的子查詢來連接,像這樣:

SELECT 
     K.ID_Katalog, 
     K.attribut_1, 
     STUFF 
     (
     (
      SELECT 
        ', ' + CAST(P.ID_POLOZKA AS varchar) 
       FROM 
        KATALOGxPOLOZKA P 
       WHERE 
        P.ID_KATALOG = K.ID_Katalog 
       FOR XML PATH('') 
     ), 1, 2, '' 
    ) AS polozka 
    FROM 
     KATALOG K; 
-2

水木清華這樣的:

recs:=sqlExecute(join the tables) 
while not recs.eof() do 
begin 
    s:=recs.fields['join field from master table') 
    dataset.append, and init other fields 
    while (not recs.eof()) and s=recs.fields['join field from master table') do 
    begin 
    dataset.fields['concat field']:=dataset.fields['concat field'] + recs.field['polozka'] + ', '; 
    recs.next; 
    end; 
    cut trailing comma 
    dataset.post; 
end; 
+1

這是什麼?... –

+0

它稱爲僞代碼..給出一般結構,要求提供確切的語法 – Jur

+0

,所以你必須提到這一點。否則會令人困惑,爲什麼你在這裏使用? –

相關問題