|
|
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
Help me! Please. Я новичок и наверное поэтому не могу задать в гугле правильный запрос на мою проблему. Задача такова. Вот такая табличка country sity rating Russia Moscow 2 Russia Moscow 4 London UK 5 London UK 1 Для всех случаев когда страна и город имеют вторую оценку выше первой, то вывести эту страну и город. В данном случае условию удовлетворяет - Russia Moscow Я так понял, что это называется сравнение 2-х последовательных ячеек в столбце. Именно для MySql я решения не нашел. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 02:49:47 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
Novich12Alex, во-первых вам надо определить какая из строчек СССР, Москва, 2 СССР, Москва, 4 является первой, а какая второй. Без использовании сортировки по колонке времени или по колонке ИД -- задача будет неопределена во-вторых, после определения порядка посмотрите FAQ на предмет нумерации строк в групах. затем попробуйте придумать алгоритм решения сами. Еше надо уточнить -- будут ли только пары или записей с оченками может быть 10 для каждого города. Может ли быть одна запись? что делать в таких случаях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 03:09:28 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
javajdbc, Это результат запроса, отсортированный как раз по дате. Т.е. не будет 10-ти записей или только одной, все уже ненужное отфильтровано. Вот этот момент надо сделать и задача решена. Колонку с датой я могу добавить. Если сравнение 2-х последовательных ячеек в Mysql - задача непростая и требует много уточнений, то тогда видимо я использую неправильный подход для ее решения. В этом случае, я могу всю задачу выложить, есть скрипт, с помощью которого можно по быстрому залить таблицы с данными... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 05:13:19 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
Novich12Alex, ok, тогда примерно так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. предполагается что в исходных данных все города имеют два вхождения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 05:48:18 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
может так? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 12:44:16 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, ваше решение не совем верное, но подводит к такому: Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 18:05:48 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
javajdbc Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. В последних версиях оптимизатор оптимизирует from подзапросы и такая конструкция, увы, работать не будет. Тут с примерами для разных версий разбирается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 19:38:31 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
retvizanjavajdbc Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. В последних версиях оптимизатор оптимизирует from подзапросы и такая конструкция, увы, работать не будет. Тут с примерами для разных версий разбирается. хм, по ссылке -- интересная дискуссия. Но похоже, ребята там не очень опытные в использовании переменных и нарываются на извесные грабли. Мой вариант в этом топике должен быть намного стабильнее чем варианты по ссылке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 20:06:46 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
javajdbc, Под граблями вы имеете в виду, что для двух условий через and не гарантируется тот же порядок исполнения, что и в запросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 21:33:31 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
javajdbcваше решение не совем верноено позвольте... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Обоснуйте, пожалуйста, ваше возражение... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 21:50:42 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
retvizanjavajdbc, Под граблями вы имеете в виду, что для двух условий через and не гарантируется тот же порядок исполнения, что и в запросе? при беглом просмотре обсуждения по ссылке (и другово обсуждения на которое ссылается первое), я заметил следующее: 1. по ссылке переменные используются в where группе. Это запрешено использовать всем кроме юзера bochkov. 2. по ссылке переменные используются НЕ на том же уровне селекта/подселекта на котором производится сортировка. Если вы заметили , то мое решение включает использование переменных только в СЕЛЕКТ и только на томже уровне что и группировка. По вашей ссылке обсуждается потеря сортировки при переходе на следующий уровень. 3. недетерминированый порядок вычисления полей в группе селект, как и недетерминированый порядок вычисления условий через AND -- несколько раз упомянуты в литературе как "возможная" проблема. И даже предложены способы это избежать. Но я ни разу не видел чтоб ктото показал чтоб порядок НЕ выполнялся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 23:42:56 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, таки да, вы правы -- ваше решение -- корректное 100%. Приношу извинения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 23:47:41 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
Спасибо всем, кто откликнулся! Отдельное спасибо Cygapb-007!!! Все заработало. Разберу запрос на запчасти, чтобы окончательно понять как это работает )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 02:52:05 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
javajdbc 1. по ссылке переменные используются в where группе. Это запрешено использовать всем кроме юзера bochkov.Соглашусь частично: bochkov действительно пишет красивые запросы с переменными и использование переменных в части where требует особой осторожности. А вот по второму пункту не понял вашу мысль. javajdbc2. по ссылке переменные используются НЕ на том же уровне селекта/подселекта на котором производится сортировка.И у вас точно также. From-подзапрос с сортировкой обеспечивает нужный порядок строк перед прохождением с переменными. javajdbc2. Если вы заметили , то мое решение включает использование переменных только в СЕЛЕКТ и только на томже уровне что и группировка.А какая разница? Мой запрос с переменными в where можно переписать как ваш с дополнительным from-подзапросом и переменными в select. При этом у вас предполагается, что порядок вычисления полей в части select такой же как и в запросе, а у меня, что порядок вычисления условий в where такой же как в запросе. По сути одинаковое допущение, но у вас лишний from-подзапрос. Тот факт, что запрос с переменными в части where в версиях 5.5 не работает это, имхо, бага оптимизатора . Первоначально я ошибочно отнес это на потерю сортировки из-за ликвидации from-подзапроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 16:17:12 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
.... javajdbc2. по ссылке переменные используются НЕ на том же уровне селекта/подселекта на котором производится сортировка. >>И у вас точно также. From-подзапрос с сортировкой обеспечивает >> нужный порядок строк перед прохождением с переменными. В моем решени порядок расчета переменных обеспечивается ORDER BY на томже уровне на котором и вычисления. Это в корне отличается от того что вы якобы увидели: "From-подзапрос с сортировкой обеспечивает нужный порядок" javajdbc2. Если вы заметили , то мое решение включает использование переменных только в СЕЛЕКТ и только на томже уровне что и группировка. >> А какая разница? Мой запрос с переменными в where можно >> переписать как ваш с дополнительным from-подзапросом и переменными в select. По ссылке есть много разных запросов. Для конкретности, приведите, пожалуйста, ваш пример. >> При этом у вас предполагается, что порядок вычисления >> полей в части select такой же как и в запросе, а у меня, >> что порядок вычисления условий в where такой же как в >> запросе. По сути одинаковое допущение, но у вас лишний from-подзапрос. Тут надо чуть аккуратнее определить о чем дискуссия. Есть две раные проблемы: (А) порядок вычисления записей и (Б) порядок вычисления полей внутри одной записи. (А) -- реальная проблема... которая распадается на две: А-1 порядок вычисления в WHERE групе -- этот порядок никогда не был гарантирован и крайне не рекомендуется А-2 порядок вычисления в SELECT групе -- гарантирован только если есть ORDER BY в том же уровне. Не гарантирован без ORDER BY или если есть GROUP BY. (Б) -- предпологается что это может быть проблемой но ни разу я не видел доказательств что проблема сушествует >> Тот факт, что запрос с переменными в части where в версиях 5.5 не работает это, имхо, бага оптимизатора . Первоначально я ошибочно отнес это на потерю сортировки из-за ликвидации from-подзапроса. я не советую тратить всемя на обсуждения работы переменных в WHERE блоке: -- разное кеширование в марии и в мускл-е(по вашей ссылке) -- влияние индексов (читал пару лет назад), -- неопределеный порядок записей Вроде бы достаточно :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 19:18:05 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
javajdbcВ моем решени порядок расчета переменных обеспечивается ORDER BY на томже уровне на котором и вычисления. Это в корне отличается от того что вы якобы увидели: "From-подзапрос с сортировкой обеспечивает нужный порядок" Да, действительно, вы правы. Это я ваш запрос неправильно прочитал из-за отсутствия отступов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 10:25:08 |
|
||
|
Сравнение 2-х последовательных ячеек в столбце
|
|||
|---|---|---|---|
|
#18+
javajdbc во-первых вам надо определить какая из строчек В нулевых тебе (топикстартеру) надо ещё понять, что это -- реляционная база данных, а не эксель, тут нет колонок и столбцов, тут есть записи и поля. Порядок записей не определён (это значит, что его нет). А если тебе нужно такие задачи решать -- в Excel иди и там разбирайся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 13:27:40 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38531111&tid=1835354]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 295ms |

| 0 / 0 |
