powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / выбор самого большего совпадения
6 сообщений из 6, страница 1 из 1
выбор самого большего совпадения
    #38556783
__1@1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
доброго времени суток.
кесть запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT 
    pp.phone_code, pp.price, t.id, t.phone
FROM
    call_task t
join
    provider_price pp ON (t.phone like concat(pp.phone_code, '%'))
where
    t.created_at > '2013-12-01'
        and t.id = 6666
	-- and pp.phone_code = max(pp.phone_code) // Error Code: 1111. Invalid use of group function	0,000 sec

-- group by t.id
order by t.id desc , pp.phone_code desc



возвращает такой ответ http://joxi.ru/NM75Uv3JTJBZefKz5h0

необходимо получить 1 строку с максимальным совпадением pp.phone_code с t.phone

что-то я где-то упускаю...
...
Рейтинг: 0 / 0
выбор самого большего совпадения
    #38556796
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__1@1,

Код: sql
1.
2.
order by pp.phone_code desc
limit 1


?
...
Рейтинг: 0 / 0
выбор самого большего совпадения
    #38556806
__1@1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
таки наверно да.
спасибо
...
Рейтинг: 0 / 0
выбор самого большего совпадения
    #38556811
__1@1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
усложняем ...
я если мне нужно получить оную цену (с максимальным схождением) для каждого t.id (ну тоесть если закомментировать and t.id = 6666)?
...
Рейтинг: 0 / 0
выбор самого большего совпадения
    #38556818
__1@1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получилось вот так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select
 tt.*,
(SELECT 
    pp.phone_code -- , pp.price, t.id, t.phone
FROM
    call_task t
join
    provider_price pp ON (t.phone like concat(pp.phone_code, '%'))
where
  /*  t.created_at > '2013-12-01'
         and
*/ t.id = tt.id
	-- and pp.phone_code = max(pp.phone_code)
-- group by t.id
order by pp.phone_code desc
limit 1) as pr
from call_task tt
where
    tt.created_at > '2014-01-01'



что можно оптимизировать?
...
Рейтинг: 0 / 0
выбор самого большего совпадения
    #38556874
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__1@1,

читайте фак, там есть варианты FAQ: Выборка первой/последней записи в группах
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / выбор самого большего совпадения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]