![]() |
Нестандартный вывод записей из таблицы
Доброго дня.
Заранее благодарен всем, кто сможет помочьsmile Уже 2 неделю бьюсь над задачей. Буду благодарен за любую мысльsmile Есть таблица с записями вида HTML код:
day id_work count HTML код:
day1 day2 id_work HTML код:
day1 day2 id_work Берет первую запись 20130326, смотрит - count больше 0, это 1 день диапазона. Далее берет следующую запись 20130327, смотрит - count больше 0. Это 2 день диапазона. Далее берет следующую запись 20130328, смотрит - count больше 0. Это 3 день диапазона. 3 дня есть, то выводим HTML код:
20130326 20130327 1 Далее уже начинаем с записи 20130328. Берет первую запись 20130328, смотрит - count больше 0, это 1 день диапазона. Далее берет следующую запись 20130329, смотрит - ага, count равен 0. Это диапазон уже не нужно выводить. И так далее. Тут без переменных и вложенных запросов никак. Уже весь мозг себе сломал)) Возможно ли организовать запрос, который бы сделал нужные выводы? Спасибо. P.S. Прощу прощения, если неправильно выразил задачу, ещё не все возможности MySQL изучил:) В голове все перемешалось. Заранее спасибо, всем кто даже прочтет. |
ponigrom@vk, первая мысль -- никак. Дело в том что SQL системы работают по другим принципам, нежели "обычная". Реляционная алгебра дает в ответ множество. Как обрабатывать это множество -- задача программиста конечной системы.
Перебор кортежей (записей таблицы) циклом for губителен для производительности базы данных. ИМХО, получив такую таблицу, ее надо уже обсчитывать в какой-либо иной системе. perl как текст, python как кортежи, С++, C#, Delphi как массив и т.д. и т.п. |
Не, я конечно могу предложить адский вариант, который ломает мозг и скорее всего не работает :)
Этим мы выбираем 3 первых записи где count больше нуля Код:
1. Select top 3 * from table where count >0 order by day1 Код:
2. Select top 3 * from table where count >0 and day1 not in (Select top 3 day1 from table where count >0) Хотя мне кажется, что я ошибаюсь, но проверить можно :) А вообще lxa85 прав, делать такую задачу на чистом SQL - самоубийство. Гораздо быстрее и проще обработать это каким либо языком программирования. |
Время: 21:46. |
Время: 21:46.
© OSzone.net 2001-