2013-03-25 78 views
0

我有一個類似的表結構的SQLite數據庫顯示相關值,與LANID是一個FK到另一個表:SQL查詢在相同的列單獨的列

ID LANID TEXT 
------------------------- 
1  101  Issue1 
1  102  Comment1 for Issue1 
2  101  Issue2 
2  102  Comment1 for Issue2 
3  101  Issue3 
3  102  Comment1 for Issue3 
1  102  Comment2 for Issue1 
... 

我想取從文本字段共享相同的ID值,使用的查詢是這樣的:

SELECT t.TEXT as issue, s.TEXT as comment 
FROM MyTable as t, MyTable as s 
WHERE t.LANID = '101' and s.LANID = '102' AND t.ID = s.ID 
     AND t.TEXT like "%some text in Issue1%" 

它幾乎工作,但有一個問題:它不能在需要的時候「重複」值。換句話說,我不能顯示第二個評論像這樣的問題:

issue    comment 
--------------------------------- 
Issue1  Comment1 for Issue1 
Issue1  Comment2 for Issue1 
... 

在此先感謝您的任何提示。

+0

作品http://sqlfiddle.com/#!7/cdd38/6 – Justin 2013-03-25 21:38:06

回答

1

我會用一個明確的自我join,而不是在原來的查詢中使用隱​​式join

SELECT 
    mt1.Text AS Issues, 
    mt2.Text AS Comment 
FROM MyTable mt1 
JOIN Mytable mt2 
    ON mt1.ID = mt2.ID 
    AND mt1.LANID = 101 
    AND mt2.LANID = 102 

See it in action with Sql Fiddle

+0

謝謝你的建議。 – Panos 2013-03-25 22:11:30

0

我覺得這個問題實際上是關於你如何設置你的數據庫。註釋應該在一個單獨的表中引用外鍵的問題。沒有完善的數據庫設計,你會一直在努力。

+0

實際上,真正的數據庫的這個簡單的例子似乎打破每一個規範化規則,但它仍然是爲了處理一些特殊情況。 – Panos 2013-03-25 22:08:03

0

您的查詢確實顯示第二個評論。見this example at SQL Fiddle

爲了更好的方式來寫一個join,看到Michael Fredrickson's answer

+0

事實上,我原來的查詢工作。關於身份證的破壞字段定義是問題,說實話,我會花費整晚,直到我明白爲止......謝謝。 – Panos 2013-03-25 22:13:01