0
我有一个非常复杂的查询在SQLite中进行,我需要一些帮助来理解如何去做。SQLite复杂查询帮助
下面的例子是我的数据库:
Category:
CatID | CatTitle
----------------
1 | XYZ
2 | Sample
Content:
ItemID | ItemCatID | ItemText | ItemText2 | ItemText3 | ItemText4
-----------------------------------------------------------------
1 | 1 | Test | Bla | Sample | MoreContent
2 | 1 | Test2 | BlaBla | Sample2 | Other Content
3 | 2 | Test3 | BlaBla2 | Sample3 | Other Content2
现在,我基本上想要做一个查询,在搜索字符串。(即“%XYZ%”与通配符),我想我不想搜索CatTitle,但也ItemText,ItemText2和ItemText3
我想返回的参数是:CatID,CatTitle,ItemID,如果可能的话,“ItemFilteredText”(可以是任何从ItemText到ItemText4,取决于其中是匹配)
继承人首先,如果这个查询匹配CatTitle,那么如果返回项ID,它应该是第一个项目ID和不是最后一个项目ID
我有以下SQL有些工作......
select DISTINCT Category.CatID,
Category.CatTitle,
Content.ItemID,
Content.ItemText,
Content.ItemText2,
Content.ItemText3
from Content,Category
where Category.CatID = Content.ItemCatID
AND (Category.CatTitle like'%XYZ%'
OR Content.ItemText like '%XYZ%'
OR Content.ItemText2 like '%XYZ%'
OR Content.ItemText3 like '%XYZ%')
GROUP BY Category.CatTitle ORDER BY Category.CatID ASC
它返回数据...但通过Category.CatTitle分组意味着Content.ItemID将返回2,而不是1
任何想法?
谢谢,那是做的工作。 我想接下来的问题是如何将ItemText的值返回给单个别名下的ItemText3,如果它们匹配...(即ItemFilteredText)... 除此之外...如果CatTitle匹配,则只返回CatID& CatTitle(所有其他值应为空),否则如果从ItemText到ItemText3的任何项匹配,则返回该值作为别名(但不返回同一行的多个结果 所以它应该显示: – AAA 2010-07-22 11:41:48