Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询,用于将相关值显示在与单独列相同的列上_Sql_Sqlite_Join - Fatal编程技术网

SQL查询,用于将相关值显示在与单独列相同的列上

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

我在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的文本字段中获取值:

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上的字段定义不正确是个问题,老实说,我会花上一整晚的时间,直到我找到答案……谢谢。