|
Выборка повторяющихся записей
|
|||
---|---|---|---|
#18+
Псевдонимы таблиц в запросе - это обозначения таблиц только в этом конкретном запросе и они (псевдонимы) могут быть какими угодно и для любых таблиц и процедур. Например, SELECT C.CITY FROM CITIES C WHERE C.POPULATION < 1000000, где C - псевдоним таблицы CITIES SELECT A.NAMTVR FROM PROC_NAKL(:ID) A, где A - псевдоним для хранимой процедуры PROC_NAKL В предыдущем сообщении Код: plaintext 1. 2. 3. 4. 5. 6. 7.
PSEVD1 и PSEVD2 - это и есть псевдонимы для одной и той же таблицы <ab>. В данном запросе нужно, чтобы одна и та же таблица была открыта как-бы два раза для нахождения записей, у которых Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2003, 16:31 |
|
Выборка повторяющихся записей
|
|||
---|---|---|---|
#18+
Спасибо....Все работает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2003, 16:58 |
|
Выборка повторяющихся записей
|
|||
---|---|---|---|
#18+
Катерина, либо Вы не захотели подумать и дополнить мой первоначальный вариант, либо незаметили или невнимательно проанализировали вариант Dnico, который доработал его за Вас, либо в этом форуме неправильно поставили задачу. Задачу Вы сформулировали, насколько я понял, следующим образом: Вытащить все повторяющиеся записи столько раз сколько они повторяются. Причём у этих записей могут совпадать сразу три поля: abfam, abname, abotch . К тому-же критична скорость выполнения на большой БД. Ну так что-же Вам мешает воспользоваться предложенной Dnico хранимой процедурой. Если Вам непонятен его текст в общем виде, привожу в конкретном. create procedure SP_PROC returns( id_out integer, fam_out varchar(n1), name_out varchar(n2), otch_out varchar(n3) )as declare variable fam varchar(n1); declare variable name varchar(n2); declare variable otch varchar(n3); begin for select s1.abfam, s1.abname, s1.abotch, count(*) from spr s1 group by s1.abfam, s1.abname, s1.abotch having count(*) > 1 into :fam, :name, :otch do for select s2.id, s2.abfam, s2.abname, s2.abotch from spr s2 where (s2.abfam = :fam) and (s2.abname = :name) and (s2.abotch = :otch) into :id_out, :fam_out, :name_out, :otch_out do suspend; end Поскольку здесь нет подзапросов - выполняется быстро. Вариант Timujin тоже хорош, когда совпадение по одному полю. У Вас их несколько. Поэтому N подзапросов впоследствии неудобно будет анализировать. К тому-же работать N будет медленне, чем 1 или 2. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2003, 17:02 |
|
Выборка повторяющихся записей
|
|||
---|---|---|---|
#18+
Пока непонятен. Не буду скрывать.... Буду разбираться.... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2003, 17:06 |
|
Выборка повторяющихся записей
|
|||
---|---|---|---|
#18+
2 Zmeishe >> Вариант Timujin тоже хорош, когда совпадение по одному полю. Мой вариант работает, когда совпадение по любому кол-ву полей Ж:( См. выше на запросы ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2003, 17:12 |
|
Выборка повторяющихся записей
|
|||
---|---|---|---|
#18+
Timujin >> Мой вариант работает, когда совпадение по любому кол-ву полей Ж:( В том, что работает нисколько не сомневаюсь. Но N подзапросов проанализировать, например через год будет сложно. Тем более, если будешь заниматься уже другой задачей и придётся вновь дорабатывать эту. Или если вместо тебя эту задачу будет сопровождать другой программист. for select ... do for select ... do читается и анализируется легче чем select ... where (select .... where) and (select .... where) Смысл термина 'читабельность', ещё никто не отменял. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2003, 08:35 |
|
Выборка повторяющихся записей
|
|||
---|---|---|---|
#18+
2 Zmeishe К критике отношусь положительно, но тут я не согласен. Какой код понятнее: Zmeishe Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
или Timujin Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Если я не прав, напиши мне, ALL ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2003, 09:17 |
|
Выборка повторяющихся записей
|
|||
---|---|---|---|
#18+
друзья, помогите, не могу разобраться. Прочитал, попытался сделать как тут, не выходит... Проблема следующая: 1. Есть таблица, в которую заносятся данные о выплатах с проекта, а именно ник пользователя (user) и кошелек (purse) 2. В таблицу заносятся изо дня в день выплаты, и ник может повторяться. 3. Необходимо найти те ники пользователей, которые заносят выплаты на одинаковые кошельки. Поиск мультиаккаунтов. Нужен запрос. Мучился ппц сколько. Получается не особо хорошо, то выводит список всех выплат, то не выводит вообще. Запрос использовал следующий: $db->Query("SELECT *, db_payment.purse upurse FROM db_payment WHERE purse IN (SELECT purse FROM db_payment GROUP BY purse HAVING COUNT(*) > 1) ORDER BY purse "); выводит примерно так: а надо так: То есть показать не все выплаты на эти кошельки, а только по одной записи, если такие встречаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 01:31 |
|
Выборка повторяющихся записей
|
|||
---|---|---|---|
#18+
wh1, если я тебя правильно понял то это должно помочь: Код: plsql 1.
Такие древние топики не стоит поднимать, хотя задача и похожа немного. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 11:49 |
|
Выборка повторяющихся записей
|
|||
---|---|---|---|
#18+
stelvicwh1, если я тебя правильно понял то это должно помочь: Код: plsql 1.
Такие древние топики не стоит поднимать, хотя задача и похожа немного. Спасибо, но не помогло (( Посижу, поломаю еще голову... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 17:37 |
|
Выборка повторяющихся записей
|
|||
---|---|---|---|
#18+
wh1Спасибо, но не помогло Что, "очки не действуют никак"?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 17:55 |
|
|
start [/forum/topic.php?fid=40&msg=32213837&tid=1562669]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 256ms |
total: | 396ms |
0 / 0 |