У меня очень сложный запрос в 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, затем, если он возвращает ItemID, это должен быть ПЕРВЫЙ ItemID, а НЕ ПОСЛЕДНИЙ ItemID
У меня следующий 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
Любые идеи?