Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / как правильно посчитать многострочный результат? / 15 сообщений из 15, страница 1 из 1
23.04.2015, 16:05:55
    #38943712
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
вот есть такой вывод:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
+--------+------+-----+
| bankID | pack | sub |
+--------+------+-----+
|      1 |    1 |   3 |
|      1 |    1 |   2 |
|      1 |    1 |   1 |
|      1 |    1 |   4 |
|      2 |    1 |   1 |
|      2 |    1 |   2 |
|      2 |    1 |   3 |
|      3 |    1 |   3 |
|      3 |    1 |   1 |
|      3 |    1 |   2 |
|      3 |    1 |   4 |
|      4 |    1 |   3 |
|      4 |    1 |   1 |
|      4 |    1 |   4 |
|      4 |    1 |   2 |
|      5 |    1 |   1 |
|      5 |    1 |   3 |
|      5 |    1 |   2 |
|      6 |    1 |   1 |
|      6 |    1 |   2 |
|      6 |    1 |   3 |
|      7 |    1 |   4 |
|      7 |    1 |   3 |
|      7 |    1 |   2 |
|      7 |    1 |   1 |
|      8 |    1 |   1 |
|      8 |    1 |   2 |
|      8 |    1 |   3 |
|      9 |    1 |   2 |
|      9 |    1 |   3 |
|      9 |    1 |   1 |
|     10 |    1 |   3 |
|     10 |    1 |   2 |
|     10 |    1 |   1 |
|     10 |    1 |   4 |
|     45 |    3 |   2 |
|     45 |    4 |   4 |
|     45 |    4 |   3 |
|     45 |    4 |   2 |
|     45 |    1 |   1 |
|     45 |    1 |   2 |
|     45 |    2 |   3 |
|     45 |    1 |   3 |
|     45 |    4 |   1 |
|     45 |    2 |   1 |
|     45 |    2 |   2 |
|     45 |    3 |   1 |
|     45 |    1 |   4 |
+--------+------+-----+
48 rows in set (0.00 sec)



pack это пакет с правилами
sub это сами правила
здесь выводятся только совпавшие, но вообще мне надо найти такие bankID, в которых совпали ВСЕ правила из `pack`
скажем, для bankID=1 там 5 sub на самом деле, а совпало только 4, значит он мне не нужен
а для bankID=2 всего 3 sub и он подойдёт
вот щас думаю, как это лучше сделать
самый простой вариант - в пхп посчитать кол-во и сравнить с select * from table where bankID IN (список совпавших)
т.е. делать ещё 1 запрос по общему кол-ву правил
думал ещё про temporary table
как то через сам sql можно упростить? и чтобы без функций?
...
Рейтинг: 0 / 0
23.04.2015, 16:53:43
    #38943744
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
GROUP BY + HAVING COUNT(DISTINCT)
...
Рейтинг: 0 / 0
23.04.2015, 17:14:15
    #38943773
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
ok
HAVING не придумал, как воткнуть, а без него вот такой результат:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
+--------+------+----+
| bankID | pack | sb |
+--------+------+----+
|      1 |    1 |  4 |
|      2 |    1 |  3 |
|      3 |    1 |  4 |
|      4 |    1 |  4 |
|      5 |    1 |  3 |
|      6 |    1 |  3 |
|      7 |    1 |  4 |
|      8 |    1 |  3 |
|      9 |    1 |  3 |
|     10 |    1 |  4 |
|     45 |    1 |  4 |
|     45 |    2 |  3 |
|     45 |    3 |  2 |
|     45 |    4 |  4 |
+--------+------+----+
14 rows in set (0.00 sec)



SELECT `bankID`,`pack`,count(`sub`) as sb FROM `filters` GROUP BY `bankid`,`pack` ORDER BY `bankid`,`pack`;

как теперь оставить только те `bankID`, у которых хотя бы 1 `pack` захватил ВСЕ свои `sub` ?
как я говорил, у bankID=1 их найдено 4, а надо 5, значит он мимо
а у bankID=2 их как раз 3, значит он остаётся
каждому подзапрос делать нехочется
...
Рейтинг: 0 / 0
23.04.2015, 17:16:53
    #38943776
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
tip78у bankID=1 их найдено 4, а надо 5, значит он мимо
а у bankID=2 их как раз 3, значит он остаётся
Вот интересно, а как запрос догадается, что у bankID=1 их 5, а у bankID=2 их только три?
...
Рейтинг: 0 / 0
23.04.2015, 17:33:55
    #38943792
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
Akina, ну как вариант - делать подзапрос в эту же таблицу считая, сколько там всего `sub` у данного `pack`
но я ищу чё-то поизящнее
...
Рейтинг: 0 / 0
23.04.2015, 17:36:06
    #38943794
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
хотя бы через общий запрос отдельный, через временную таблицу может

зы: блин, почему тут редактировать нельзя мессаги свои
...
Рейтинг: 0 / 0
23.04.2015, 18:15:12
    #38943836
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
tip78считая, сколько там всего `sub` у данного `pack`Итицкая сила! Покажи НА ТВОИХ ДАННЫХ, блин, где ты там 5 насчитал???
...
Рейтинг: 0 / 0
23.04.2015, 18:23:09
    #38943845
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
Akinatip78считая, сколько там всего `sub` у данного `pack`Итицкая сила! Покажи НА ТВОИХ ДАННЫХ, блин, где ты там 5 насчитал???
Код: plsql
1.
2.
3.
4.
5.
6.
7.
mysql> select count(sub) from filters where bankid=1 and pack=1;
+------------+
| count(sub) |
+------------+
|          5 |
+------------+
1 row in set (0.00 sec)
...
Рейтинг: 0 / 0
23.04.2015, 20:22:36
    #38943938
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
Я от тебя что просил? НА ТВОИХ ДАННЫХ. Вот тех самых, которые ты в начале темы запостил. Глазки подыми и посчитай повнимательнее - там только ЧЕТЫРЕ записи для bankid=1 and pack=1.
...
Рейтинг: 0 / 0
23.04.2015, 20:26:19
    #38943940
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
AkinaЯ от тебя что просил? НА ТВОИХ ДАННЫХ. Вот тех самых, которые ты в начале темы запостил. Глазки подыми и посчитай повнимательнее - там только ЧЕТЫРЕ записи для bankid=1 and pack=1.
ты сам то глазки подыми и прочитай повнимательнее:
авторскажем, для bankID=1 там 5 sub на самом деле, а совпало только 4, значит он мне не нужен
...
Рейтинг: 0 / 0
23.04.2015, 20:29:29
    #38943941
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
Ну так вот и делай
Код: sql
1.
SELECT id_count from `на самом деле`
...
Рейтинг: 0 / 0
23.04.2015, 20:40:30
    #38943946
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
AkinaНу так вот и делай
Код: sql
1.
SELECT id_count from `на самом деле`


так для каждого банка отдельный запрос получится
я так не хочу
...
Рейтинг: 0 / 0
23.04.2015, 22:57:42
    #38944002
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
Или ты дашь все данные, которыми оперируешь, или можешь и дальше не хотеть...
...
Рейтинг: 0 / 0
24.04.2015, 10:01:11
    #38944206
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
AkinaИли ты дашь все данные, которыми оперируешь, или можешь и дальше не хотеть...
да какие ещё детали? последнее отдал, от сердца оторвал
есть таблица фильтров, у каждого банка их несколько
чтобы банк совпал, нужно чтобы совпали ВСЕ фильтры этого банка
если совпало 4 из 5, он не нужен, нужно 5 из 5
...
Рейтинг: 0 / 0
24.04.2015, 10:06:09
    #38944215
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильно посчитать многострочный результат?
Покажи исходные таблицы. Включая ту, из которой видно, что "для этого банка имеется 5 фильтров". Пока что ты её тщательно прячешь.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / как правильно посчитать многострочный результат? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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