Можно ли выполнить эту задачу с помощью одного MySQL запроса?
Таблица urls .Поля { id , url }
1, www.mysite.kom
2, mysite.kom
3,anothersite.kom
Таблица Журналы .Поля { id , url_id , group_type - число в диапазоне 1..10}
1, 1,4
2, 1, 4
3, 2, 5
4, 2, 5
5, 3, 9
Результат запросав этом примере должно быть: 1 (mysite.com и www.mysite.com = 1)
ЦЕЛЬ:
Нужно сосчитатьвсе отдельные URL-адреса записаны в таблицу logs , но с несколькими условиями:
1) URL-адреса с префиксом www. и без него, например mysite.kom и www.mysite.kom ,
должны учитываться как 1 (не 2).
2) Имеют group_type в диапазоне 4..6
3) Теперь любой из этих URL с group_type 4..6 , которые появляются в списке с group_type ниже 4 - следует игнорировать и вообще не учитывать.
Код SQL:
SELECT COUNT(DISTINCT TRIM(LEADING 'www.' FROM b.url))
FROM logs a
INNER JOIN urls b
ON a.url_id = b.id
WHERE (group_type BETWEEN 4 AND 6)
----- and this condition below -----
AND TRIM(LEADING 'www.' FROM b.url)
NOT IN (
SELECT TRIM(LEADING 'www.' FROM b.url)
FROM logs a
INNER JOIN urls b
ON a.url_id = b.id
WHERE (group_type < 4)
)
Если мой sql-запрос правильный, можно ли оптимизироватьk более компактный)?