|
|
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Я со своими Update-ами уже весь форум замучил. Желаю разобраться с коррелированными запросами раз и навсегда. Не далее как вчера была похожая тема Саныча. Но чего-то я в этом вопросе недопонимаю, и каждый раз когда я с этим сталкиваюсь, я убеждаюсь, что я ничего не понимаю. Посему вопрос к тем, кто в этом разбирается - как надо рассуждать при написании коррелированного запроса. И пример задачи, которую я не могу решить (:-() В таблицу test Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Если кто-то решит эту задачку, большая просьба разъяснить, как этот запрос работает, чтоб разобраться с этим раз и навсегда. Может еще и ссылку кто даст, где про такие запросы можно почитать. Спасибо. Отключаюсь на 2 часа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 13:08 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Я вот условия не очень понял... авторПосле вставки надо проставить в поле duplicate флаг в те строки, которые уже проходили ранее по данному FK Объясни по человечески - это значит, что надо Update-нуть только те строки у которых FK такой-же как и у 6-й строки? тогда почему такой список... id=6,8,9,10 не догоняю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 13:17 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
ИМХО Имеется ввиду следующие Если есть в таблице записи с id меньшим текущей и с равным FK, то ставм "ДА", иначе "НЕТ" Так понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 13:19 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. проверил - работает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 13:23 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Bely. paparome очень точно выразил мысль : "Если есть в таблице записи с id меньшим текущей и с равным FK, то ставм "ДА", иначе "НЕТ" Paramone , красота, действительно этот запрос Код: plaintext 1. 2. Вот только я, жертва графических конструкторов запросов, не понимаю - как. И не понимаю, как надо думать, чтобы его придумать. Если есть у тебя время, объясни, пожалуйста, словами, как он работает и как вообще делать эти коррелированные запросы. Как ты при этом рассуждаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 15:14 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Мысли в слух :) 1)Непонятно, зачем держать дополнительно поле в таблице ( в данном случае -duplicate),не несущее самостоятельного смысла, когда всегда можно получить нужное значение простым (или не очень ) селектом. 2)Если уж возникла крайняя необходимость в таком поле , то лучше его инициализировать во время вставки данных, а не морочить голову апдейтами . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 15:19 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
авторВот только я, жертва графических конструкторов запросов, не понимаю - как. Не пользуйся графическими конструкторами: - Сначала будет тяжело - Зато потом, просто (я, например, уже не могу в конструкторе нарисовать, что-то сложнее select * from tbl1 :( ) авторИ не понимаю, как надо думать, чтобы его придумать. Я тоже плохо понимаю, как надо думать, чтобы такое придумать :( Вот, например, если в этом запросе поменять left join на inner join, то наверное он не будет работать, а может будет (ну не знаю я :( ) А, вообще, примерно так - выражаешь свою мысль на русском, а потом переводишь в SQL (у меня так) Вот я написал (достаточно точно сформулировал суть поблемы) авторЕсли есть в таблице записи с id меньшим текущей и с равным FK, то ставм "ДА", иначе "НЕТ" И перевел это на SQL: Если есть в таблице записи с id меньшим текущей = (t1.id > t2.id) и = and с равным FK = (t1.fk = t2.fk) то ставм "ДА" = Set t1.duplicate = true кстати - если left заменить на inner, то наверное быстрее будет и условие не потребуется :) (хотя могет и ругнуться, что запрос не обновляемый :( ) автори как вообще делать эти коррелированные запросы. коррелированные - я и словьев-то таких не знаю :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 15:28 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
2 Varan Представь ,что коррелированный запрос - это некая функция ,получающая входные параметры от основного запроса ,и возвращающая результаты работа в основной запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 15:39 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
VIG, Ну, этот "duplicate" не мною придуман, смысл, видимо, в нем есть, хотя, может быть ту же мысль можно и в другой структуре воплотить. Смысл в том, что надо быстро знать, прервая это строка по данному FK или нет. В тех запросах, где эта структура используется, нет возможности это проверять запросом (они и так на пределе), лучше это просто прочитать. Можно, наверное, и при вставке (кстати, как?), но мне это что-то в последий момент в голову пришло. Но по смыслу будет почти то же самое, что Paramone предложил. Блин, их же при удалении придется апдейтить еще...:-(. У меня это как-то из головы вылетело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 15:44 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
2 Варан Да - все глухо :( А зачем, что-то там запросом насчитывать? Там где надо проверить, первая это запись или нет пишешь (DCount("*","test","(id <" & rs("id") & ") and (fk = " & rs("fk") & ")")>0) Вот и будут твои ДА и НЕТ , только в реальном времени! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 15:48 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
paparome, там строк больше 500 тыс, это dcount тормозить будет в риалтайме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 15:52 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Ага - будет :) Индексы накрути А при удалении записи(записей) где-нить в начале таблы (сортирую по id) вам придется пересмотреть всю таблицу ниже (с большими id) удаленных Думаете не будет тормозить? А при вставке ... хотя привставке только один проход по таблице (в любом случае DCount - тоже самое делает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 15:56 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
(c)VIG, Кстати, у Paromone этот запрос и не коррелированный вроде, просто на самообъединении... Кстати, главная загвоздка, из-за которой я после конструкторов не могу такой запрос составить on (t1.id > t2.id) . Мне б и в голову не пришло такое условие в Join написать. Перетаскивая поля в конструкторе запросов при джойне с одного места на другое, у меня сложился стереотип, что Join выполняется только по равенству, тут же - более сложное условие... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:06 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Кстати, с Inner Join тоже работает. Ладно, пошел запросы изучать. Мы строили, строили, и, наконец, построили ... :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:13 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
В продолжение темы: В данном случае ( запросе от paparome) коррелированным запросом и не пахнет. В запросе есть маленькая ошибка вместо Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:13 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
1. Не надо мой ник перевирать!! paparome я! (лучше копируй через буфер) :) 2. в качестве условия к join можно писать все что хочешь, но вот представить это в Конструкторе Акс уже не сможет, это ограничение конструктора, а не SQL как такового! (хотя конструктор в MSSQL такие феньки уже понимает :) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:15 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
VIG, У paparome (приношу извинения за ошибку в нике) правильно, вариант on (t1.id <> t2.id) выдает полную чушь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:18 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
2 Виг авторon (t1.id <> t2.id) and (t1.fk = t2.fk) мотивируй? Я возражаю :) авторПосле вставки надо проставить в поле duplicate флаг в те строки, которые уже проходили ранее по данному FK Проходили ранее (т.е. с меньшим id, но с таким же fk) А не есть ли еще кроме данной строки еще строки с таким же fk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:19 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
2 paparome При t1.id > t2.id не будет апдейтиться запись с минимальным id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:23 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
авторПри t1.id > t2.id не будет апдейтиться запись с минимальным id А и не должна :) Читаем условие задачи внимательнее Если запись с минимальным id, значит нет записи с таким же FK, но с id меньшим, чем у этой записи! В чем непонятки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:26 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
О! кстати понял зачем мне left join понадобился (Сапибо Виг :) ) Код: plaintext 1. Это если в поле duplicate полный бардак :) И при left join все поля будут апдетиться (даже с минимальным id) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:33 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Ну, хрен редьки не слаще :) Теперь у тебя запись с минимальным id всегда будет false, даже если для нее есть дубликаты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:49 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Блин, Виг Да она и должна быть false !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:51 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
См. первый пост там есть пример как должно быть первые 5 записей уже правильно, как и остаьным 5 такое сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:52 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Хорошо - переформулирую Все записи имеющие дубликаты по fk должны быть помечены true, кроме первого вхождения! (первое вхождение = false) Это условия задачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 16:54 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Может она и должна быть false но логиге это не поддается имеем id FK duplicate 1 1 false 2 1 true получается что запись с id=1 не имеет дупликат, а с id=2 имеет? может в этом есть какой-то высший смысл, но я его понять не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:00 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Виг, это делается для того, чтобы потом сделать фильтр по этим False и получить все id по одному разу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:01 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
(c)VIG , Я видимо условие плохо разъяснил, если по FK есть дубликаты, но с большим id, то в строке с самым младшим id должно в duplicate должно стоять false, так и надо, а в строках с более старшим id - true. Смысл - пометить false-ом именно первую записанную строчку с даннным FK false в duplicate, а не отметить все строчки, которые имеют дубликатов, тогда бы было совсем просто - типа такого update test set test.duplicate=true where test.fk in (SELECT test.fk FROM test GROUP BY test.fk HAVING (((Count(test.fk))>=2));); Но это решение другой задачи. Видимо название поля duplicate выбрано неудачно :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:04 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Высший смысл есть! Это поле сигнализирует о том, что в выборке данной таблицы с id меньшим или равным текущему дубликатов нет (или есть) Не во всей таблице, а именно в ее части, где id <= текущего id. Ну как тебе еще объяснить? PS - ладно, больше не буду :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:04 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
авторвсе id по одному разу. все fk по одному разу Очепятался - бывает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:05 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Угу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:06 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
paparome А последний твой запрос мне очень по душе пришелся. Он, как бы это сказать, самокорректирующийся. Можно его на Update всей таблицы поставить после каждой группы вставок - удалений - и не париться, что когда-то в duplicate попало не то число... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:07 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Ну - дык Вигу спасибо, а то я парился - зачем это мне left join понадобился :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:09 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Специально для Вига - пример такой задачи, который был у меня. Список людей, посетивших курс иврита. Если какой-то человек прошел курс дважды, то при втором его появлении нужно написать: "повторно". Чтобы случайно не посчитать его второй раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:10 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Саныч, Моя еврейская логика говорит мне , что если у меня есть брат-близнец, то и у моего брата-близнеца тоже есть брат-близнец :). Код: plaintext Если я сделаю фильтр по False , то максимум что я буду знать - то что полученный id первый (возможно единственный ) в группе с одинаковыми FK , но не буду знать если у него дупликаты или нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:13 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Вот - Саныч, он может :) Взял и все по полочкам разложил :) Молодца!!! PS - побольше таких людей!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:14 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Виг, мой пост от 17:10 видел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:14 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Special for VIG Пометить дубликаты : как победить коррелированные запросы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:15 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
VIG смысл флага - идентифицировать первую строчку, записанную в test с данным FK, лучше было бы дать полю флага имя FirstGo и выставлять в True. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:25 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 2 Саныч Когда писал-нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:26 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Кстати Если для поля duplicate сделать по дефолту True то достаточно будет Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:42 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
и чем это быстрее моего Код: plaintext 1. 2. Код: plaintext 1. Если уж на то пошло, то inner, да еще и без условия, явно будет быстрее left с условием. Нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:46 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
авторСписок людей, посетивших курс иврита. Если какой-то человек прошел курс дважды, то при втором его появлении нужно написать: "повторно". Чтобы случайно не посчитать его второй раз. Саныч, а зачем?. Что плата за курс возрастает в геометрической прогрессии в зависимости от к-ва прохождений ? имхо проще Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 17:59 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Плата от этого тоже зависит - для 2-го и более раза она 50%. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 18:04 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Вы пишите быстрее чем я читаю 2 paparome Потому что в твоем случае обновляются все записи кроме первой, а в моем - только первая. У меня Иннер не канает, у тебя запросто- но быстрее от этого не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 18:13 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Вы пишите, вы пишите, вам зачтется. Я потом, что непонятно, объясню... (С) почти Окуджава. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 18:15 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Господа, все варианты интересны и по-своему хороши. Всем спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 18:15 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
VIGПотому что в твоем случае обновляются все записи кроме первой, а в моем - только первая. А каких больше - первых или не первых - зависит от задачи. В моем примере как раз первых было большинство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 18:18 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
в 17:59 фигню написал просто select FIO,count(FIO) from MyTable group by FIO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 18:22 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Этот селект не везде годится. Например, у меня отчет - список учеников по группам. Человек должен фигурировать столько раз, сколько раз он был на курсе. Но там, где он пришел второй раз, должно быть примечание об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 18:27 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
авторВ моем примере как раз первых было большинство. Твiй тонкiй намьок- зрозумiв Саныч. Первый - Он всегда один , вторых-может быть много Имелось в виду первый в группе из одинаковых. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 18:59 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Ты думаешь, я этого не понимаю? 200 человек посетили курс. Из них пятеро по два раза. Итого 200 записей с первыми и 5 со вторыми. Что больше - 200 или 5? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:06 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Саныч, спорим что можно. Я так понимаю что один и тот человек не мог учиться более одного раза в одной той же группе ,и при условии что нет однофамильцев ( в этом случае просто надо учитывать и еще что нибудь например теудат зеут) Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:18 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
1. Спорим, что можно что? Я спорю о том, что моя постановка задачи имеет право на существование. 2. То, что ты сейчас написал, не позволяет отличить первый заход от не первого. 3. А по именам я, слава Богу, не смотрю. Я понимаю, что такое бсис нетуним менурмаль. В таблице людей есть счетчик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:26 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Саныч, а ты думаешь, я этого не понимаю. Потому и твержу все время, что не нужно нагружать базы абсолютно лишней информацией, котораю при необходимости элементарно получить. Вот и получается , что при написании запроса и его оптимизации надо еще учитывать ,кто будет преподовать на курсе: Владимир Саныч, у которого из 200 человек только 5 повторных, или VIG- у которого обратная картина. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:30 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Если все рвутся к тебе по второму разу и готовы платить деньги, то надо радоваться. :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:33 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Саныч, ради бога только не обижайся. Я если в горячке спора и ляпнул что-то лишнее, то не с целью тебя обидеть авторТо, что ты сейчас написал, не позволяет отличить первый заход от не первого. А сейчас обижусь я Не отличает второй заход от третьего и последующих. Но уж первый от второго .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:41 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
1. Я и не думал обижаться. Если позвонишь, я тебе улыбнусь в трубку. 2. Твой селект от 19:18 никак не отличает первый заход от второго и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:44 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
А , понял что ты имеешь в виду. В принципе зависит когда формируется отчет ( или берутся деньги ) -до того, или после. Если после регистрации то надо >1 если до , то тут чуть сложнее- реальный запрос зависит от структуры базы, но в принципе это все легко решаемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:53 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Блин. Не человека с одним заходом от человека с двумя, а первый заход от второго. У тебя id захода (и проверка на <) отсутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 19:55 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Блин, Саныч. Но я же написал при каких допущениях это работает. Для реальной базы могут понадобиться корректировки. Но это же не принципиально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 20:06 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. Твой селект в первых двух строках выдаст одно и то же. При любых допущениях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 20:10 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
А с умищем то , с умищем что делать! ( из анекдота). Ну так добавь проверку на id или дату регистрации или еще что-нибудь Это же не принципиально. З.Ы. Кстати , а где Varan? Он хотел посмотреть на коррелированный подзапрос. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 20:19 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
VIGНу так добавь Но я вообще перестал понимать, что ты хотел доказать селектом от 19:18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 20:21 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Ну так я ж сказал- Показать как пишутся коррелированые запросы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 20:33 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
авторНо я вообще перестал понимать, что ты хотел доказать селектом Саныч, я понял. Подводил тебя к 10000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 20:37 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
:^) Так. Я все понял. Снимаю шляпу, прошу прощения и бью себя по морде. Сейчас сотру весь хвост этого топика. Тем самым убью двух зайцев: и (спровоцированных мной) разговоров не по теме будет меньше, и Лифчику дам возможность выпить еще раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 20:41 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Э... Стоп. Ты в том посте что-то мне доказываешь. "Саныч, спорим что можно". Я так и не понял, о чем это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 20:43 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Ну как бы имелось в виду , что можно найти нужную инфу селектом, а не заводить еще одно поле и потом ломать голову ,как правильно его апдейтить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 20:53 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Это я с этим спорил? Ухожу на пенсию... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 20:54 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Вот авторВиг, это делается для того, чтобы потом сделать фильтр по этим False и получить все id по одному разу. Потом авторСписок людей, посетивших курс иврита. Если какой-то человек прошел курс дважды, то при втором его появлении нужно написать: "повторно". Чтобы случайно не посчитать его второй раз. В контексте выступлений предыдущих ораторов сделал вывод , что у тебя тоже есть специальное поле ,в котором ты отмечаешь первый , не первый , и.т.д ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 21:11 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
У меня такое поле действительно есть. Я действительно привел пример из своей базы, аналогичный примеру из вопроса. Но я никогда не настаивал, что это наилучшее решение. Я согласен, что такое поле нарушает нормализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 21:14 |
|
||
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#18+
Бог с ним. Ты лучше обьясни , что такое "бсис нетуним менурмаль" - "Ненормальная база данных" или "База данных для ненормальных" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 21:34 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1674376]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 423ms |

| 0 / 0 |
