0

SQLITEデータベースにこれに似たテーブル構造があり、LANIDは別のテーブルへのFKです。

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を共有するTEXTフィールドから値をフェッチしようとしています。

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%"

ほぼ機能しますが、1つの問題があります。それは、必要なときに値を「複製」できないことです。つまり、次のような同じ問題の2番目のコメントを表示することはできません。

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

ヒントを事前に感謝します。

4

3 に答える 3

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

SqlFiddleで実際に動作することを確認してください

于 2013-03-25T21:38:31.760 に答える
0

問題は、データベースをどのように設定したかということだと思います。コメントは、外部キーの問題を参照する別の表に含める必要があります。健全なデータベース設計がなければ、あなたはいつもある種のことに苦労するでしょう。

于 2013-03-25T21:36:21.833 に答える
0

クエリには2番目のコメントが表示されます。SQLFiddleでこの例を参照してください。

を書くためのより良い方法については、MichaelFredricksonの回答joinを参照してください。

于 2013-03-25T21:39:27.907 に答える