Я пытаюсь создать поисковую систему для списков в моей базе данных.
Пользователь может ввести поисковый запрос, который затем будет разделен на слово за словом. Затем слова сопоставляются с их идентификаторами тегов в моей базе данных (тег - это всего лишь одно слово). Затем выполняется поиск в таблице ссылок для тегов и элементов списка для перечисления ID элементов и ListingID, которые содержат эти теги. Затем результаты сортируются по количеству тегов, которые содержит листинг (списки, которые содержат больше тегов, отображаются первыми). Наконец, данные листинга выбраны.
Моя проблема в том, что, когда я объединяю результаты идентификатора упорядоченного списка с таблицей списков, порядок списков стирается.
Я пытался изменить порядок две таблицы в операторе соединения, но я продолжал получать SQL ошибок.
SELECT * FROM listing
JOIN
(SELECT listingID
FROM listing_item_tags
JOIN (
SELECT tagID FROM tags WHERE tagName IN ("2","1","4")
) as tagIds
ON listing_item_tags.tagID = tagIds.tagID
GROUP BY listingID
ORDER BY COUNT(listingID) DESC
) AS ListingIDS
ON listing.listingID = ListingIDS.listingID