|
|
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
Всем привет! У меня есть таблица в ней что-то типа сессий, время входа, время выхода, мак адрес etc. так вот, мне необходимо составить запрос таким образом, чтобы определить сколько строк содержит тот или иной мак адрес. ЗЫ. Мне именно нужно на стадии запроса получать эти данные, что бы при дальнейшей обработке они уже были, речь идёт о тысячах строк, мб даже и больше. Возможно ли это? или мне придётся всё по средствам PHP разруливать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 16:37:29 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
COUNT() и GROUP BY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 16:45:03 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
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 запросах. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 17:56:29 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 18:02:58 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
Спс, всё получилось. Вот такой запрос получился 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 Всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 18:05:44 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
DISTINCT - лишний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 18:09:29 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
Akina, Точно) и без него тоже самое. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 18:10:44 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
Application, DISTINCT не нужен и даже вреден. и лучше COUNT(*) Application`ID_location` = '87' and `start` >= '1437426000'в этих полях строковые значения? вероятно нет, тогда кавычки у строковых литералов лучше убрать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 18:11:02 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
miksoft, Это условие выполняется верно не вижу смысла менять, там int у меня. Это как-то повлияет на быстродействие? Или на что-либо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 18:13:19 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
Applicationmiksoft, Это условие выполняется верно не вижу смысла менять, там int у меня. Это как-то повлияет на быстродействие? Или на что-либо?Может повлиять, если преобразование типов не в ту сторону пойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 19:32:20 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
Вобщем получился у меня вот такой запрос: 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. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2015, 09:05:21 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
ЗЫ. Результат 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2015, 09:08:11 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
Уже разобрался сам) может кому-нибудь пригодится вот такой запрос получился: 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 запросах, но работает как надо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2015, 10:57:28 |
|
||
|
Определение повторений каждого значения.
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2015, 17:13:42 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39034188&tid=1832786]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 298ms |

| 0 / 0 |
