|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
Добрый день уважаемые форумчане. Имею таблицу такого вида (приложил скрин). В ней есть строки которые заканчиваются и начинаются на одинаковое время(строка 2, 3), т. е. перерыва в интервале времени не содержат, их нужно убрать, в данном случае нужно убрать третью строку. Возможно ли это сделать средствами SQL, если возможно, что нужно использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 12:33 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
Дайте CREATE TABLE исходной таблицы, и пример данных в виде INSERT INTO. И укажите точную версию MySQL. it_crb29 нужно убрать третью строку Убрать - просто убрать из выборки, или удалить из таблицы? Окончание для третьей строки надо переместить во вторую вместо нынешнего, чтобы получить слитный, суммарный, интервал, или вторую трогать не надо? Окончание третьей равно началу четвёртой - четвёртую тоже надо убрать? одинаковое время - с точностью до секунды? или возможна небольшая ошибка (плюс-минус). который следует игнорировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 14:57 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
1. Просто убрать из выборки. 2. 2.1 Не трогаем вторую строку и не трогаем четвертую строку. ( Тогда начало интервала я возьму из 2ой, а конец из 4ой) ИЛИ 2.2 Заменяем во второй строке дату окончания, на дату окончания в четвертой строке. (Тогда начало и конец я возьму из второй строки) 2.3 В обоих случаях 3я строка уйдет из выборки. 3. Время скорее всего будет точное, поэтому и погрешности не будет. Версия mysql на данный момент 5.1.73, через неделю переделаю на 5.5.67; Файлы приложил. Ссылка на дамп ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 18:56 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
Нет, Вы это серьёзно - структура аж с внешними ключами и комментариями, и пример данных на 12 метров? В структуре следует убрать всё лишнее - все не-уникальные индексы и внешние ключи, а также ненужные для сути проблемы поля. Ну и, само собой, всякие атрибуты таблицы и прочее, для сути ненужное. В примере данных - оставить 5-10-20 записей, на 2-3 клиента. Причём важное для сути проблемы сочетание должно встречаться и не встречаться у как минимум одной группы (в данном случае к одного - только пары, у другого цепочка, у третьего вообще без слияния). Ну и, конечно. нужен требуемый (эталонный) результат. На именно этих данных. it_crb29 Версия mysql на данный момент 5.1.73, через неделю переделаю на 5.5.67; Это придётся решать на переменных - значит, индексы побоку, сплошной фуллскан. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 19:19 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
Прикладываю, файл с insert и разбор того что должно быть на выходе. Раскрасил цветами. Если переходить на 8ку и использовать 8ку я замучаюсь дебажить возникшие перфоманс проблемы ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 20:13 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
fiddle PS. Предполагается, что время совпадает ТОЧНО, и нет наложения диапазонов. Иначе подзапрос нужно корректировать. PPS. В следующий раз старайтесь предоставлять исходные данные в виде вот такого fiddle - это сильно упрощает процесс. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 22:22 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
Вы сделали в SQL, то, что я бы сделал только на js, я даже и не знал что SQL так умеет. К тому же очень, очень редко встретишь человека готового разобрать вопрос и дать исчерпывающий ответ. Запрос я изучу, доработаю, вам спасибо за разъяснения и поддержку! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 09:09 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
it_crb29 Вы сделали в SQL, то, что я бы сделал только на js it_crb29 даже и не знал что SQL так умеет. FAQ: Нумерация строк и другие вопросы про использование переменных it_crb29 Запрос я изучу Для изучения выполните только подзапрос и поймите, что и как он считает для передачи основному запросу. Не разберётесь - спрашивайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 13:06 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
Table Если допустить, что в таблице Schedule будет несколько разных person_id, при этом сортировать по дате не нужно, SELECT будет по одному дню. То на данной выборке, ошибка в 4 строке Код: sql 1.
и не хватает строки Код: plsql 1.
Необходимо конкатенировать только строки с одинаковым `person_id`. П.С. Запрос я немного изменил. В строчке Код: plsql 1.
у меня на сервере сортирует и по person_id и по begTIme, на fiddle только по одному полю. П.С.С. Сегодня уже поздно, завтра с утра я подумаю как делать конкатенацию только у строк с одинаковым person_id и отпишусь. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 22:47 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
it_crb29 Необходимо конкатенировать только строки с одинаковым `person_id`. Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 23:17 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
Запрос я откорректировал и данных добавил. fiddle Если определить что select будет по одной дате, чего мне на данный момент достаточно, то следующий запрос делает все что нужно, я поменял в конкатенации поле `date` на `person_id`. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Если же допустить, что выборка будет по интервалу дат, скажем неделя, то полагаю нужно будет сделать что то вроде: Код: sql 1.
Вечером проверю свое предположение на большой выборке. Еще раз спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2020, 09:49 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
Итоговый запрос такой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Единственно не совсем понимаю почему ORDER BY `date` не сортирует как надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2020, 22:47 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
it_crb29 почему ORDER BY `date` не сортирует как надо. Просто нужно помнить, что во внешнем запросе сортировка, выполненная в подзапросе, не имеет никакого значения. Если надо - в нём должна быть ещё одна, своя, сортировка. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 07:25 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
Все вспоминаю с чувством благодарности, помощь, которую вы мне оказали, с того времени дополнил и изменил запрос, но то что вы сделали, безусловно, великолепно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2020, 19:39 |
|
Cлияние строк в одну по условию
|
|||
---|---|---|---|
#18+
Akina, Разве в подзапросе не надо учитывать "доктора/поциента" (кто там Сухих?) для нумерации групп? Кмк, так получается одна сквозная нумерация, которую потом "фиг разделишь" по пациентам.. .. может group_number собирать как текст CONCAT(номер, пациент), не? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 11:15 |
|
|
start [/forum/topic.php?fid=47&msg=39937271&tid=1828351]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
130ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 249ms |
total: | 476ms |
0 / 0 |