SQLite 3 如何过滤 LEFT JOIN table 的关键字?

How to filter a key word of LEFT JOIN table in SQLite 3?

这个问题可能有点复杂。我用一个简单的例子来解释我的问题。我知道这些表结构不寻常。我的问题是关于 SQL 命令。

示例,3 个表:

参数表

P_ID   ParaName_ID
  1        1
  2        2
  3        3

ParaDescTable

P_ID   ParaDesc_ID
  1        4
  2        5
  3        6

语言表

String_ID    StringValue
  1          Name_Hello1
  2          Name_2
  3          Name_3
  4          Desc_TEXT1
  5          Desc_Hello2
  6          Desc_TEXT2

如果我输入 SQL 命令:

SELECT p.* ,    
    lang0.StringValue ParaName,        
    lang1.StringValue ParaDescription

FROM ParameterTable p 
    LEFT JOIN LangTable lang0
        ON lang0.String_ID = p.ParaName_ID AND lang0.String_ID
    LEFT JOIN ParaDescTable pt
        ON pt.P_ID = p.P_ID
    LEFT JOIN LangTable lang1
        ON lang1.String_ID = pt.ParaDesc_ID AND lang0.String_ID 

WHERE  p.P_ID > 0

它将显示为:

P_ID   ParaName_ID  ParaName     ParaDescription 
 1         1        Name_Hello1  Desc_Text1 
 2         2        Name_2       Desc_Hello2
 3         3        Name_3       Desc_Text3

我想添加一个过滤功能,在 ParaName & ParaDescription 栏中搜索关键词 'Hello' 如下。

P_ID   ParaName_ID  ParaName     ParaDescription 
 1         1        Name_Hello1  Desc_Text1 
 2         2        Name_2       Desc_Hello2

如何修改SQL命令? 非常感谢。

我从不使用 SQLite,但尝试使用 LIKE 子句

尝试

SELECT p.* ,    
    lang0.StringValue ParaName,        
    lang1.StringValue ParaDescription

FROM ParameterTable p 
    LEFT JOIN LangTable lang0
        ON lang0.String_ID = p.ParaName_ID AND lang0.String_ID
    LEFT JOIN ParaDescTable pt
        ON pt.P_ID = p.P_ID
    LEFT JOIN LangTable lang1
        ON lang1.String_ID = pt.ParaDesc_ID AND lang0.String_ID 

WHERE  p.P_ID > 0
AND (paraName LIKE '%Hello%' OR ParaDescription LIKE '%Hello%' )

也这样试试

select * from (
SELECT p.* ,    
    lang0.StringValue ParaName,        
    lang1.StringValue ParaDescription

FROM ParameterTable p 
    LEFT JOIN LangTable lang0
        ON lang0.String_ID = p.ParaName_ID AND lang0.String_ID
    LEFT JOIN ParaDescTable pt
        ON pt.P_ID = p.P_ID
    LEFT JOIN LangTable lang1
        ON lang1.String_ID = pt.ParaDesc_ID AND lang0.String_ID 

WHERE  p.P_ID > 0 ) as tt where paramName LIKE '%Hello%' 
OR ParaDescription LIKE '%Hello%'