У меня очень сложный запрос в SQLite, и мне нужно немного понять, как это сделать.SQLite Complex Query Help
Следующий пример из моей базы данных:
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, в зависимости от на котором находится матч)
Heres the вещь, если запрос соответствует 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
Она возвращает данные ... но группировка по категориям. CatTitle означает, что Content.ItemID вернет 2, а не 1
Любые идеи?
Спасибо, что сделал эту работу. Я думаю, следующий вопрос: как вернуть значения ItemText в ItemText3 под одним псевдонимом, если они совпадают ... (например, ItemFilteredText) ... В дополнение к этому ... Если CatTitle соответствует, тогда ТОЛЬКО возвратите CatID & CatTitle (все остальные значения должны быть пустыми), в противном случае, если любой элемент из ItemText в ItemText3 совпадает, а затем возвращает это как псевдоним (но не возвращать несколько результатов одной и той же строки. Так оно должно показать: – AAA