Задавайте вопросы, мы ответим
Вы не зашли.
Есть таблица поля в поле number числа от 1 до 16
id number time
1 5
2 3
3 3
4 2
5 2
6 7
7 8
...
нужно составить запрос так чтоб он выводил по 5 последних записей для каждого числа
результат должен быть такой
number
1
1
1
1
1
2
2
2
2
2
...
и так для каждого числа)
Заранее спасибо)
Неактивен
Неактивен
Спасибо за ссылки очень интересная информация но вот не могу додуматься как это все проделать с одной таблицей( чтоб она выводила по 3 последние записи для каждого числа) может что то подскажите)
Неактивен
У меня вопросик переписал запрос под себя и не могу разобраться почему по числу 0 он группирует 3 записи а по остальным по 4 ?
Запрос :
set @n=3, @i=0, @p=0;
select * from baza t1
join number t2 on t1.number=t2.number
where @i<=@n and if(@p=t1.number, @i:=@i+1,(@i:=0) or (@p:=t1.number));
Неактивен
Что я не понял, что означают таблицы baza и number, когда в исходном сообщении только одна таблица.
Неактивен
Я все прочитал и сделал еще одну табличку number c числами 01234...для теста как это все работает так как только учусь) но ваш запрос который вы написали выдает не правильные данные число 0 оно группирует только 2 раза а (должно 3 записи) а все остальные по 3 в этом я не могу разобраться (
Неактивен
Вообще должно работать.
Kochevnik написал:
Но ваш запрос который вы написали выдает не правильные данные число 0 оно группирует только 2 раза а (должно 3 записи) а все остальные по 3 в этом я не могу разобраться (
Приведите данные, на которых запрос не работает в том виде, в котором я привёл - посмотрим, почему не работает .
Неактивен
Я ведь написал не хочет группировать число "0" я просто случайные числа писал в условии)
Неактивен
Да, есть такое, потому что @num=number возвращает ноль в случае, если number=0 . Лёгкая модификация СОРД:
Неактивен
у меня в таблице не будет минусовых чисел)
Неактивен
Ну тогда последнея модификация должна работать.
Неактивен
Спасибо сам бы долго искал причину) кажется все отображается завтра проверю на своей таблице)))
Неактивен
А можно ли сделать в таком виде если в предыдущий пример добавить еще один столбец count...
Пример
id number count
1. 1 23
2. 3 45
3. 1 45
4. 5 83
5. 1 78
6. 4 2
7. 4 0
8. 3 36
9. 2 12
10. 2 14
...
как переделать под такой запрос я в курсе)
Условия такие как в первом примере но результат должен быть в чуток другом виде)
Результат:
number count
1 23:45:78
2 12:14: ...
3 45:36: ...
....
Или в таком виде:
number | 1 | 2 | 3|
1 23 45 78
....
возможна ли так сделать)
или лучше перебирать в цикле средствами php первый пример?
Вот такая на мой взгляд непростая задачка (
Если возможно дать ссылки на информацию чтоб во всем разобраться и дать совет) Спасибо)
Неактивен
Kochevnik написал:
Результат:
number count
1 23:45:78
2 12:14: ...
3 45:36: ...
Неактивен
Написал запрос запрос работает) вот только правильно его написал с точки синтаксиса?
Неактивен
vasya написал:
Kochevnik написал:
Результат:
number count
1 23:45:78
2 12:14: ...
3 45:36: ...
Спасибо помог только пришлось искать русское описание )
И еще вопросик у меня тип данных tinyint прочитал в статье что числа в этой функции нужно конвертировать в текст)
Как надо поступать?
Неактивен
Kochevnik написал:
Написал запрос запрос работает) вот только правильно его написал с точки синтаксиса?
Если бы вы его неправильно написали с точки зрения синтаксиса, то он бы не работал
Kochevnik написал:
Спасибо помог только пришлось искать русское описание )
И еще вопросик у меня тип данных tinyint прочитал в статье что числа в этой функции нужно конвертировать в текст)
Как надо поступать?
В документации я такого не вижу
Неактивен
Спасибо еще раз но вот еще один камень появился этой функции еще явно нужно показывать в каком сортировать а то я посмотрел что она разбросала мои данные как попало?
Неактивен
Да.
Неактивен
Есть еще одна задачка не знаю можно ли реализовать в mysql
Условия та же самая табличка с числами)
+----+--------+---------------------+
| id | number | count |
+----+--------+---------------------+
| 13 | 1 | 33 |
| 6 | 1 | 44|
| 12 | 1 | 55 |
| 2 | 2 | 21 |
| 10 | 2 | 33 |
| 11 | 2 | 11 |
| 14 | 3 | 32 |
| 9 | 3 | 25 |
| 3 | 3 | 14 |
| 1 | 4 | 18 |
| 4 | 4 | 32 |
| 8 | 4 | 21 |
| 15 | 5 | 32 |
| 5 | 5 | 45 |
| 7 | 5 | 25 |
+----+--------+---------------------+
а мне нужен результат который будет выводить числа и count которые стоят до и после числа (нужны данные по последним 3 числам каждого числа )
number | 1 | 2 | 3 |
1 | 5 : 45: 5: 25 | 2 :11: 1:33 | 1:55:3:32|
ч.д.n:c.д.ч:ч.п.n:c.п.n
....
обозначения:
ч.д.n - число до number id-1
с.д.n - count до number id-1
ч.п.n - число после number id+1
c.п.n - count после number id+1
и так для всех чисел (числа от 0 до 37)
Возможно ли составить такой запрос ? Помогите с запросом если это возможно) или альтернативное решение)
Неактивен
Что-то смысл задачи от меня ускользает
Неактивен
Попробую объяснить
есть группа чисел от 0 до 37
например число 1 перед ним стоит 4 после 7 надо вывести 1 - 4 и 7
нужно вывести для каждого числа числа которые идут до и после этого числа числа ) нужно вывести для 3 последних чисел так понятней?
Неактивен
Kochevnik написал:
есть группа чисел от 0 до 37
например число 1 перед ним стоит 4 после 7 надо вывести 1 - 4 и 7
В исходной таблице есть 3 строчки где number =1
| 13 | 1 | 33 |
| 6 | 1 | 44|
| 12 | 1 | 55 |
Откуда берутся 4 и 7?
Неактивен
Я просто пример привел не по таблице сейчас приведу по таблице)
Число 1 у него id=13 нам надо числа до это число и count с
id=12 (number=1 count=55) и после число с id=14( number=3 count=32)
Следующее число 1 но у него id=12 c этого следует
что нам нужны числа и count с id=11 и id=13;
Следующее число 1 но у него id=6 c этого следует
что нам нужны числа и count с id=5 и id=7;
переходим к следующему числу 2)......
Может так лучше будет)
Неактивен
С помощью подзапросов:
select t1.*, (select concat(number,':',count from `таблица` t2 where t2.id=t1.id-1)) from `таблица` t1;
Неактивен