powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом пожалуйста
8 сообщений из 8, страница 1 из 1
Помогите с запросом пожалуйста
    #39046607
akamit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,

есть таблица с примерно такими данными
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
+---------+------+-------+
| loop_id | p_id | owner |
+---------+------+-------+
|       1 |    1 |  a    |
|       1 |    2 |  b    |
|       1 |    3 |  b    |
|       2 |    1 |  a    |
|       2 |    2 |  b    |
|       2 |    3 |  d    |
|       3 |    1 |  с    |
|       3 |    2 |  b    |
|       3 |    3 |  b    |
+---------+------+-------+

на выходе запроса должно быть кол-во неразрывных loop_id(начиная с последнего) для каждого p_id принадлежащих одному owner (уфф.. надеюсь понятно объянил).
То есть как-то вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
+------+---------+--------+
| p_id | owner | count    |
+------+---------+--------+
|    1 |     c |        1 |
|    2 |     b |        3 |
|    3 |     b |        1 |
+------+---------+--------+


Возможно ли это сделать средствами только sql запроса? Заранее спасибо!
...
Рейтинг: 0 / 0
Помогите с запросом пожалуйста
    #39046615
akamit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первое, что приходит в голову это select p_id, owner, count(loop_id) c from history group by p_id

но это конечно же не учитывает что p_id может принадлежать разным owner
...
Рейтинг: 0 / 0
Помогите с запросом пожалуйста
    #39046679
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
select x.p_id, left(x.gc,1) owner, length(x.gc)-length(trim(leading left(x.gc,1) from x.gc)) `count`
from (
  select t.p_id, group_concat(t.owner order by t.loop_id desc separator '') gc
  from test t
  group by t.p_id
) x;
...
Рейтинг: 0 / 0
Помогите с запросом пожалуйста
    #39046681
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я тут наткнулся на нарушение порядка вычисления переменных:
Код: sql
1.
2.
3.
4.
5.
6.
7.
select t.p_id
  , @o:=max(concat(insert(100000+t.loop_id,1,1,''),t.owner)) o
  , substring(@o,1,5)
  , cast(left(@o,5)as unsigned) lst
  , insert(@o,1,5,'')own
from myTable t, (select @o:='99999пусто')v
group by t.p_id

p_id o substring(@o,1,5) lst own1 00003с 99999 99999 пусто2 00003b 00003 3 с3 00003d 00003 3 b
...
Рейтинг: 0 / 0
Помогите с запросом пожалуйста
    #39046784
akamit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

спасибо, я бы такой запрос никогда не составил :(
подскажите пожалуйста что это значит?
потому что в поле owner есть имена более чем один символ, а запрос, как я понял, отталкивается от того, что owner только один символ?
...
Рейтинг: 0 / 0
Помогите с запросом пожалуйста
    #39046819
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akamitв поле owner есть имена более чем один символ
В следующий раз будешь сначала думать, а потом давать пример наполнения.

akamitподскажите пожалуйста что это значит?
Не понял вопроса.
...
Рейтинг: 0 / 0
Помогите с запросом пожалуйста
    #39047164
akamit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чтобы не возникало недоразумений изменил поле owner(varchar) на owner_id(int)

вот такой запрос делает почти то, что нужно. но группирует и возвращает ВСЕ группы owner_id, а надо только последнюю группу.

select history.p_id,
group_concat(
history.owner_id
separator ',') gc,count(history.owner_id)
from history group by history.p_id,history.owner_id;
...
Рейтинг: 0 / 0
Помогите с запросом пожалуйста
    #39047248
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и адаптируй мой запрос к INT. Всего-то и надо, что преобразовать его в число фикс. длины (напр. 10) с ведущими символами (напр. нулями) и соответственно брать то же количество символов из группы слева.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом пожалуйста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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