2011-10-12 36 views
0

我對SQL很不熟悉。我有一個表,看起來像這樣:SQL - 選擇2行必須相同的行

Columns: A B C D E 
      foo bar 1 2 3 
      foo bar 4 5 6 
      foo bar 7 8 9 
      xyz abc 3 2 1 
      xyz abc 6 5 4 
      xyz abc 9 8 7 

現在我希望能夠形成像這樣的字符串:

"foo bar: 1 2 3 4 5 6 7 8 9" 
"xyz abc: 3 2 1 6 5 4 9 8 7" 

如果它的事項我也有A和B列的列表我可以去簡單地使用:

Rs1 = SELECT * FROM PARENT_TABLE: 
    for a, b in RS1 
     String = a + b 
     Rs2 = SELECT C, D, E FROM CHILD_TABLE WHERE A='a' AND B='b' 
      for every row in Rs: 
       String += C D E 
     print String 

反正有沒有做到這一點,而不必通過父表進行迭代,然後在每一行形成一個聲明,從而在一個迭代爲好。我錯過了一個明顯的解決方案?

+1

請提供您的實際模式。你使用的是哪個數據庫? – RedFilter

+0

有,但首先有*精確*每行A B組合3行? – Bohemian

+0

@ Bohemian:不,但父表中還有一個表示計數的字段。所以父表將具有A B重複計數,因爲它是列。 –

回答

1

我寫這篇文章時沒有模式的實際知識,所以它可能無法正常工作是:

SELECT A || ' ' || B || ': ' || WM_CONCAT(D || ' ' || E || ' ' || F || ' ') 
    FROM PARENT_TABLE PT 
    INNER JOIN CHILD_TABLE CT ON CT.A=PT.A AND CT.B=PT.B 
    GROUP BY (PT.A,PT.B) 

如果你需要確保你至少有2行在內,添加:

HAVING COUNT(PT.A,PT.B)>=2 
0

如果你的表中包含20行了其中2個是相同

那麼你可以通過簡單地寫

檢索數據

select * from tablename where column_name='common value of that column';