|
|
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
Есть например таблица ... 1 заппись_1 10 10,05,2012 2 заппись_2 9 11,05,2012 3 заппись_3 8 11,05,2012 4 заппись_17 8 10,05,2019 5 заппись_4 7 11,05,2012 6 заппись_16 7 10,05,2018 7 заппись_5 6 11,05,2012 8 заппись_15 6 10,05,2017 9 заппись_6 5 11,05,2012 10 заппись_14 5 10,05,2016 11 заппись_7 4 10,05,2012 12 заппись_13 4 10,05,2015 13 заппись_8 3 10,05,2012 14 заппись_12 3 10,05,2014 15 заппись_9 2 10,05,2012 16 заппись_11 2 10,05,2013 17 заппись_10 1 10,05,2012 мне надо отсортировать по 3-ему столбцу (там где значение 10,9,8) и сделать выборку до тех пор пока в 4-ем столбце встречается дата 11,05,2012 ... то есть не все записи с такой датой а именно пока она встречается ... то есть в таблице выше это будут записи от 1 до 9 ... пока единственное что приходит в голову это то что придется считать все записи и перебирать их ... но думаю можно придумать изощренный вопрос ... help ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 12:14:32 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
чето я в первом посте немного не так данные предоставил ... (эксель с годом нахимичил ...) вот скрин и немного другие данные ... мне надо сделать выборку с первой записи (с учетом сортировки) до последней записи в которой есть нужная мне дата. .. (на скрине диапазон который должен получиться в итоге выделен синим ...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 12:20:07 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
"1 заппись_1 10 10,05,2012" - пусть это будут id,a,b,dt Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. за понимаением происходящего - в FAQ: Нумерация строк и другие вопросы про использование переменных или просто погоняйте подзапросы и посмотрите на результаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 13:00:04 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
а вы б не могли конкретный ваш запрос расписать последовательно что зачем тут надо ... работать он работает как надо .. теперь бы разобраться .. и да насколько он оптимален ? потому что как я посмотрел по EXPLAIN он таблицу 4 раза полностью прогоняет .. или я не так понял ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 13:37:50 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
caHek2x, выборка своеобразная, ну и решение такое же :) а насчёт "расписать"... в t0 мы получаем (номер строки, дата) в упорядоченном по нужному полю наборе (то, что у вас на картинке) в t2 мы из этого набора получаем максимальный номер с нужной датой (т.е. последний нужный нам номер) в t1 мы получаем (номер строки, ид записи) с тем же упорядочиванием, что и в t0 потом идёт джойн основы по ид с t1 и отсечка по (t1.номер<=t0.номер) - получаем результат Сейчас вот расписал и увидел, что можно быстрее - сразу всё (а не только ид и номер строки) получить в Т1, оттуда же и выводить итоговый результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 13:49:34 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
хорошо смотрите ... а если я разобью на два запроса запроса первым получу количество элементов select max(n) as maxN from ( select @num:=@num+1 as n, date from test, (select @num:=0) zz order by nomer asc ) t0 where t0.date='2014-05-30 13:27:24' вторым сделаю выборку с сортировкой и лимитом на количество элементов ? так будет не оптимальнее ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 14:11:38 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
caHek2x, не на количество, а на номер последнего да, я об этом и говорил, сразу что-то не дошло до меня :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 14:18:54 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
caHek2x, или я не понял задачу, или : Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 14:25:58 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
javajdbc, вы не поняли задачу ... сортировать по дате не надо ... просто надо вывести от первой записи до последней записи в которой есть нужная дата ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 14:29:09 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
tanglircaHek2x, не на количество, а на номер последнего да, я об этом и говорил, сразу что-то не дошло до меня :) а как это дело сделать в одном запросе ? сделать два разных запроса в пхп это я смогу ... но все же интересно как с переменными или без них намудрить в одном запросе .. .ато мои попытке не увенчались успехом ... fail: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 14:34:32 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
так кто поможет объединить два запроса ... выдает количество записей (x): Код: sql 1. 2. 3. 4. 5. where t0.date='2014-05-30 13:27:24' на это количество мне надо лимит сделать: Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 15:59:22 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
caHek2x, Мой запрос выведет вам то что вы отметили сине-фиолетовым в екселе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 16:16:35 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
это да ... но я вот думаю как бы его оптимизировать ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 16:20:09 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
caHek2xэто да ... но я вот думаю как бы его оптимизировать ... если мой запрос верный по логике, то отлаживайте индексы и все будет хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 16:23:11 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
ваш запрос верный но ... может я не верно понимаю команду explain ... но если провести запрос на выборку количества нужных мне записей и потом провести запрос на выборку с лимитом то вот что выходит: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. а если проводить полностью вашим запросом то вот что выходит: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 16:28:53 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
по моему первый вариант разбитого запроса более оптимален ... но придется делать два отдельных запроса ... вот я и спрашиваю можно ли как то в лимит второго запроса вставить первый ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 16:30:35 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
caHek2x, есть вполне стандартные подходы к таким задачам. 1. правильно поставить задачу 2. определить желаемую скорость 3. любым способом решить ее логически правильно 4. замерить скорость решения и сравнить с желаемым 5. если достаточно быстро -- то опционально подумать про решение покрасивше 6. если медлено, начинать проверять почему медлено в двух направлениях 6.1. решать другим способом (подселекты, переменные, еше что-нибудь) 6.2 добавлять нужные индексы Сейчас у вас только есть -1- и -3- . Добавьте 2,4,5 и будет конкретное обсуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 16:51:30 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
я вас понял, а конкретно по вопросу: как можно вставить/соединить запрос 1 в запрос 2 в лимит ? 1: Код: sql 1. 2. 3. 4. 5. 6. 2: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 16:56:18 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
Стою на асфальте я В лыжи обутый То ли лыжи не едут То ли с головой не все в порядке... caHek2xпо моему первый вариант разбитого запроса более оптимален ... но придется делать два отдельных запроса ... вот я и спрашиваю можно ли как то в лимит второго запроса вставить первый ... Какое отношение ваш второй запросcaHek2xа если проводить полностью вашим запросом то вот что выходит: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. имеет к ранее предложеннному оптимальному запросуjavajdbc Код: sql 1. 2. 3. 4. 5. 6. все, больше ничего не надо. А нумерация п/п - в массиве PHP ее получите забесплатно по получении данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 17:24:37 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
чувак, может ты бы расказал что за хитрые ты запросы делаешь... посмотри внимательно на свой скрин. там записи номер 7 и 13. ты сортируешь по полю, где у обоих значение 4 тыж понимаешь что выдать может первее 7, а может и 13...это не где по твоему условию не оговариваеться. и получаеться - ты можеш получить в выводе 7 запись, а можешь и не получить...смотря как будет осуществлена выборка!!! вот и напрашиваеться вопрос - ты то сам понимаешь чётко что ты хочешь получить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 17:31:49 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
alex564657498765453чувак, может ты бы расказал что за хитрые ты запросы делаешь... посмотри внимательно на свой скрин. там записи номер 7 и 13. ты сортируешь по полю, где у обоих значение 4 тыж понимаешь что выдать может первее 7, а может и 13...это не где по твоему условию не оговариваеться. и получаеться - ты можеш получить в выводе 7 запись, а можешь и не получить...смотря как будет осуществлена выборка!!! вот и напрашиваеться вопрос - ты то сам понимаешь чётко что ты хочешь получить? я понимаю сам четко что я хочу получить ... и это таблица просто пример ... для того чтобы разобрать нужное мне ... там где я использовать буду там с сортировкой и тд все в порядке ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 22:12:36 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
Cygapb-007Стою на асфальте я В лыжи обутый То ли лыжи не едут То ли с головой не все в порядке... Какое отношение ваш второй запрос имеет к ранее предложеннному оптимальному запросу я имел ввиду вот два запроса, не так выразился просто ... : Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 22:16:48 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
авторselect * from tableх t1 where t1.b >= (select min(t2.b) from tableх t2 where t2.dt = '2014-05-29') order by b desc -- , dt desc -- закомментировал, раз ТСу желтый цвет не нравится этот вариант прекрасный .. но он не сработает если b будет повторятся ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 22:19:04 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
caHek2xа как это дело сделать в одном запросе ?странно, прочитав предыдущий вопрос, я подумал, что вы это и так поняли... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. javajdbcМой запрос выведет вам то что вы отметилипоскольку и впрямь alex564657498765453выдать может первее 7, а может и 13...это не где по твоему условию не оговариваеться, то я подозреваю, что у ТС может быть ещё какая-то сортировка по другим полям, при которой часть записей с мин(б) попадает в результат, а часть нет. Наверное, это он и имел в виду здесь: caHek2xэтот вариант прекрасный .. но он не сработает если b будет повторятся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2014, 05:39:48 |
|
||
|
Выборка своеобразная ...
|
|||
|---|---|---|---|
|
#18+
tanglirстранно, прочитав предыдущий вопрос, я подумал, что вы это и так поняли... я просто немножко множко запутался ... спасибо за помощь окончательный вариант запроса меня устраивает ... tanglirто я подозреваю, что у ТС может быть ещё какая-то сортировка по другим полям да, то что я описал как задание сдесь это просто упрощенный пример(чтоб не путаться) чтоб понять именно ту задачу которую решили вашим запросом .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2014, 06:42:00 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38656092&tid=1834739]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
84ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 449ms |

| 0 / 0 |
