|
|
|
Пометить дубликаты : как победить коррелированные запросы?
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32533041&tid=1674376]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
162ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
94ms |
get tp. blocked users: |
2ms |
| others: | 198ms |
| total: | 492ms |

| 0 / 0 |
