Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Определение повторений каждого значения. / 14 сообщений из 14, страница 1 из 1
21.08.2015, 16:37:29
    #39034126
Application
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
Всем привет!
У меня есть таблица в ней что-то типа сессий, время входа, время выхода, мак адрес etc.

так вот, мне необходимо составить запрос таким образом, чтобы определить сколько строк содержит тот или иной мак адрес.
ЗЫ. Мне именно нужно на стадии запроса получать эти данные, что бы при дальнейшей обработке они уже были, речь идёт о тысячах строк, мб даже и больше.
Возможно ли это? или мне придётся всё по средствам PHP разруливать?
...
Рейтинг: 0 / 0
21.08.2015, 16:45:03
    #39034130
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
COUNT() и GROUP BY
...
Рейтинг: 0 / 0
21.08.2015, 17:56:29
    #39034177
Application
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
Select DISTINCT `mac` From `mydb`.`session` Where `ID_location` = '87' and `start` >= '1437426000';

04:1B:BA:C8:60:F7
88:30:8A:F9:E6:8C
AC:81:12:02:24:47

вот результат, но всего строк у меня 85, в них эти 3 макадреса, вот как мне узнать какой из них сколько раз повторяется?

типа

04:1B:BA:C8:60:F7 23раза
88:30:8A:F9:E6:8C 50раз
AC:81:12:02:24:47 12раз
ЗЫ. ес можно пример запроса, я не сильно разбираюсь в SQL запросах.
Заранее благодарен.
...
Рейтинг: 0 / 0
21.08.2015, 18:02:58
    #39034181
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
...
Рейтинг: 0 / 0
21.08.2015, 18:05:44
    #39034185
Application
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
Спс, всё получилось.
Вот такой запрос получился
Select DISTINCT `mac`, count(`mac`) as cnt_mac From `mydb`.`session` Where `ID_location` = '87' and `start` >= '1437426000' GROUP BY `mac`;

Результат:

04:1B:BA:C8:60:F7 71
88:30:8A:F9:E6:8C 13
AC:81:12:02:24:47 1


Всем спасибо!
...
Рейтинг: 0 / 0
21.08.2015, 18:09:29
    #39034188
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
DISTINCT - лишний.
...
Рейтинг: 0 / 0
21.08.2015, 18:10:44
    #39034189
Application
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
Akina,

Точно) и без него тоже самое. Спасибо.
...
Рейтинг: 0 / 0
21.08.2015, 18:11:02
    #39034190
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
Application,

DISTINCT не нужен и даже вреден.


и лучше COUNT(*)


Application`ID_location` = '87' and `start` >= '1437426000'в этих полях строковые значения? вероятно нет, тогда кавычки у строковых литералов лучше убрать.
...
Рейтинг: 0 / 0
21.08.2015, 18:13:19
    #39034193
Application
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
miksoft,

Это условие выполняется верно не вижу смысла менять, там int у меня. Это как-то повлияет на быстродействие? Или на что-либо?
...
Рейтинг: 0 / 0
21.08.2015, 19:32:20
    #39034219
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
Applicationmiksoft,

Это условие выполняется верно не вижу смысла менять, там int у меня. Это как-то повлияет на быстродействие? Или на что-либо?Может повлиять, если преобразование типов не в ту сторону пойдет.
...
Рейтинг: 0 / 0
24.08.2015, 09:05:21
    #39034700
Application
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
Вобщем получился у меня вот такой запрос:

Select * From (
Select `mac`, count(`mac`) as count_come From `mydb`.`session` Where `ID_location` = '87' and `start` >= '1437685200' GROUP BY `mac`
) as `tmp` where `count_come` > '2';

Чтобы не плодить много тем, напишу тут...
Мне надо теперь на основе результата этого запроса сразу сделать запрос в другую таблицу:

Select * From `mydb`.`gtel` Where `ID_gtel` > '0' and `mac` = вот маки из первого запроса.

Подскажите кто знает??? Я с sql запросами не очень знаком, но хочется снизить нагрузку с php.
Заранее благодарен.
...
Рейтинг: 0 / 0
24.08.2015, 09:08:11
    #39034704
Application
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
ЗЫ. Результат 1-го запроса:

mac---------------------------count_come
04:1B:BA:C8:60:F7-----177
08:3D:88:FC:03:71------22
4C:B1:99:7B:86:0F-----3
88:30:8A:F9:E6:8C-----90
AC:81:12:02:24:47------5
...
Рейтинг: 0 / 0
24.08.2015, 10:57:28
    #39034777
Application
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
Уже разобрался сам) может кому-нибудь пригодится вот такой запрос получился:

select `num` from `mydb`.`gtel` as n join
(Select t.ID_gtel from `10301`.`tel` as t join
(select DISTINCT `ID_gtel` from `mydb`.`gmac` as t1 join
(Select * From (
Select `mac`, count(`mac`) as count_come From `mydb`.`session` Where `ID_location` = '87' and `start` >= '1437685200' GROUP BY `mac`
)
as `tmp` where `count_come` > '2')
as t2 on t1.mac = t2.mac and t1.ID_gtel > 0)
as t3 on t3.ID_gtel = t.ID_gtel)
as n1 on n.ID_gtel = n1.ID_gtel

Ещё раз повторюсь я не сильно шарю в sql запросах, но работает как надо)
...
Рейтинг: 0 / 0
24.08.2015, 17:13:42
    #39035037
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение повторений каждого значения.
Application(Select * From (
Select `mac`, count(`mac`) as count_come From `mydb`.`session` Where `ID_location` = '87' and `start` >= '1437685200' GROUP BY `mac`
)
as `tmp` where `count_come` > '2')Это лучше переписать через HAVING.
Код: sql
1.
2.
3.
4.
5.
Select `mac`, count(*) as count_come
From `mydb`.`session`
Where `ID_location` = 87 and `start` >= 1437685200
GROUP BY `mac`
HAVING count_come > 2
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Определение повторений каждого значения. / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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