SQL查询,用于将相关值显示在与单独列相同的列上
我在SQLITE数据库中有一个类似的表结构,LANID是另一个表的FK:SQL查询,用于将相关值显示在与单独列相同的列上,sql,sqlite,join,Sql,Sqlite,Join,我在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
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
...
它几乎可以工作,但有一个问题:它不能在需要时“复制”值。换句话说,我无法显示同一问题的第二条评论,如下所示:
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
...
提前感谢您的提示。我认为问题其实在于您如何设置数据库。注释应位于一个单独的表中,用外键引用问题。如果没有一个完善的数据库设计,您将一直在为这类事情而挣扎。我将使用显式的self
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
.您的查询确实显示了第二条注释。看
有关编写
连接的更好方法,请参阅。确实有效,这个真实数据库的简化示例似乎打破了所有规范化规则,但它仍用于处理一些特殊情况。感谢您的建议。我原来的查询确实有效。ID上的字段定义不正确是个问题,老实说,我会花上一整晚的时间,直到我找到答案……谢谢。