powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчёт количества строк в связанных таблицах
10 сообщений из 10, страница 1 из 1
Подсчёт количества строк в связанных таблицах
    #39746508
kostya5808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, есть 3 таблицы: users, postanovlenie_obr_ds, postanovlenie_ts,
Необходимо подсчитать количество строк для каждого пользователя из 2 последних таблиц.
При использовании такого кода:
SELECT users.fio, (group_concat(T.cnt)) AS k
FROM (SELECT postanovlenie_obr_ds.ip_exec_prist as prist, COUNT(id) AS cnt FROM postanovlenie_obr_ds LEFT JOIN users ON users.users_id = postanovlenie_obr_ds.ip_exec_prist GROUP BY users.fio
UNION ALL
SELECT postanovlenie_ts.ip_exec_prist as prist, COUNT(id) AS cnt FROM postanovlenie_ts LEFT JOIN users ON users.users_id = postanovlenie_ts.ip_exec_prist GROUP BY users.fio) AS T
LEFT JOIN users ON users.users_id = T.prist
GROUP BY users.fio

выводит столбец всех пользователей у кого есть строки и столбец k, в котором через запятую указаны количества строк с одной и с другой таблицы, проблема в том,что значения в столбце k идут не по порядку, например:
Должно быть
10,15
25,3
13,2
.......
А выводит:
10,15
3,25
2,13
.......
И на протяжении всех строк так, то нормально, то меняет местами.
...
Рейтинг: 0 / 0
Подсчёт количества строк в связанных таблицах
    #39746906
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте ORDER BY в аргументы GROUP_CONVAT()...
...
Рейтинг: 0 / 0
Подсчёт количества строк в связанных таблицах
    #39747043
kostya5808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, стало немного лучше, особенно в первом наборе данных, но при обновлении значений.... в общем все видно в примере. Про вставку нулей в пустые значения я пока молчу, либо про правильное распределение таких значений.
Прописал так
Код: sql
1.
SELECT users.fio, (group_concat(T.cnt ORDER BY T.cnt DESC)) AS k ....


1 набор
127,12
89,6
97,7
88,5
648,37
21,12 Тут поменялись местами
4,1
32,1
103,48
21,9 И тут поменялись
34,26
15,1
36,1
77,29

2 набор
125,12
82,9
97,7
85,5
642,38
23,12 поменялось
8,1 поменялось
2
4
22,4 поменялось
35,30
10,1
37,2
77,30
...
Рейтинг: 0 / 0
Подсчёт количества строк в связанных таблицах
    #39747068
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kostya580821,12 Тут поменялись местами
...
21,9 И тут поменялись
...
23,12 поменялось
8,1 поменялось
...
22,4 поменялось
Да чем Вы смотрите-то? ничего ж не "поменялось". У Вас задана сортировка по уменьшению (DESC). Вот всё и сортируется по уменьшению - ткните пальцем в ту строку, где сначала меньшее число, потом большее...
...
Рейтинг: 0 / 0
Подсчёт количества строк в связанных таблицах
    #39747113
kostya5808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, точно.....а мне нужно чтоб выводил, грубо говоря, «значение с первой таблицы», «значение со второй таблицы» и больше либо меньше может быть любое значение, важен именно порядок, перед запятой одна таблица, после запятой, вторая таблица.
...
Рейтинг: 0 / 0
Подсчёт количества строк в связанных таблицах
    #39747124
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT users.fio, (group_concat(T.cnt ORDER BY T.tab_id)) AS k
FROM (	SELECT postanovlenie_obr_ds.ip_exec_prist as prist, COUNT(id) AS cnt, 1 as tab_id
		FROM postanovlenie_obr_ds 
		LEFT JOIN users ON users.users_id = postanovlenie_obr_ds.ip_exec_prist 
		GROUP BY users.fio
	UNION ALL
		SELECT postanovlenie_ts.ip_exec_prist, COUNT(id), 2
		FROM postanovlenie_ts 
		LEFT JOIN users ON users.users_id = postanovlenie_ts.ip_exec_prist 
		GROUP BY users.fio) AS T
LEFT JOIN users ON users.users_id = T.prist
GROUP BY users.fio
...
Рейтинг: 0 / 0
Подсчёт количества строк в связанных таблицах
    #39747143
kostya5808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо тебе, мил-человек, как все просто оказалось, все заработало, если не сложно, может подскажешь как сделать так, чтоб ставился 0, если в какой-то из таблиц нет данных по этому пользователю, а в другой есть, например 0,5.....буду очень благодарен.
...
Рейтинг: 0 / 0
Подсчёт количества строк в связанных таблицах
    #39747218
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заменить T.cnt на COALESCE(T.cnt, 0).
...
Рейтинг: 0 / 0
Подсчёт количества строк в связанных таблицах
    #39747250
kostya5808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, что-то не выходит...и ошибки нет и все одинарные значения также заходят в первую таблицу
...
Рейтинг: 0 / 0
Подсчёт количества строк в связанных таблицах
    #39747281
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну раз нужны все юзеры, то либо заменить LEFT JOIN на RIGHT JOIN, либо поменять местами таблицу users и подзапрос.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчёт количества строк в связанных таблицах
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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