LINUX.ORG.RU

SQL запрос, поиск по 2 таблицам и порядок вывода данных.

 ,


0

1
Есть запрос
select kat.name,katz.name,katz.manf from kat,katz where (((kat.name LIKE '%Кабинеты%' or kat.name='%Прихожие%') AND katz.manf LIKE '%Besana%') AND (kat.id=katz.kid)) or ((katz.manf LIKE '%Besana%') AND (kat.id=katz.kid) AND NOT (kat.name LIKE '%Кабинеты%' or kat.name='%Прихожие%'));
Мне надо, чтобы сначало он мне вывел результат первого условия, затем второго, причем в порядке задания данных. То есть в порядке
Кабинеты Besana
Прихожие Besana
Besana (кроме кабинетов и прихожих)
Как мне это все сделать одним запросом, чтобы подсчитать результаты, а затем вывести все это на экран в том порядке который я описал?
★★

А поисковые движки, устанавливаемые на сайт вышли из моды? Или это исключительно вопрос спортивного интереса? Если последнее, то попробуй создавай временную таблицу с весами слов, связывай с ней и сортируй по весу.

r_asian ★☆☆
()
Ответ на: комментарий от winlook38

какой union, зачем?

SELECT kat.name, katz.name, katz.manf
FROM kat
LEFT JOIN katz ON kat.id = katz.kid
WHERE (
(
kat.name = '%Прихож%'
OR kat.name
OR kat.name LIKE '%Кабинет%'
)
AND katz.manf LIKE '%Besana%'
)
OR katz.manf LIKE '%Besana%'
ORDER BY (
CASE WHEN kat.name LIKE '%Прихож%'
THEN 1
ELSE 0
END
) DESC , (
CASE WHEN kat.name LIKE '%Кабине%'
THEN 1
ELSE 0
END
) DESC , kat.name ASC

Wolfram
()
Ответ на: комментарий от Wolfram

Поподробнее. А она выведет в конце последнее условие? А то в ORDER BY не задано.

Bupyc ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.