Readme.ge Blog

FB image FB image

დუბლიკატი ჩანაწერები

ავტორი: ალექსანდრე თარიღი: Monday, November 19th, 2007

მიუხედავად დიდი ყურადღებისა არის ხოლმე შეგნებული თუ თვითნებური შემთხვევები როდესაც ცხრილში ხდება ჩანაწერის დუბლირება. განვიხილოთ ამოცანა რომელიც ითვალისწინებთ დუბლირებულ იჩანაწერების მოშორებას ცხრილიდან
ავიღოთ ცხრილი

1
2
3
4
5
6
CREATE TABLE DUBL_TEST
(
FNAME    VARCHAR2(200),
AGE      NUMBER,
BIRTHDAY DATE
)


და ჩავსვათ მონაცემები შემდეგი სახით

1
2
3
4
5
aleko   |   25   |   19/11/2007
aleko   |   25   |   19/11/2007
nino    |   27   |   13/11/2007
nino    |   27   |   13/11/2007
aleko   |   20   |   19/11/2007

ეხლა ამ ცხრილიდან ამოვიღოთ ის ჩანაწერები რომელსაც გააჩნია დუბლიკატები

1
2
3
4
SELECT fname, age, birthday FROM (
SELECT a1.* FROM dubl_test a1, dubl_test a2 WHERE
a1.fname=a2.fname AND a1.age=a2.age AND a1.birthday=a2.birthday AND a1.rowid<>a2.rowid
) GROUP BY fname, age, birthday

შედეგად ჩვენ მივიღეთ ესეთი რეზულტატი –

1
2
aleko   |   25   |   19/11/2007
nino    |   27   |   13/11/2007

ყველაფერი სწორია. ეხლა ამოვიღოთ ის ჩანაწერები რომლებსაც ჩვენ DUBL_TEST ცხრილში არ გააჩნია დუბლიკატი ჩანაწერები

1
2
3
4
SELECT fname, age, birthday FROM dubl_test WHERE
rowid NOT IN
(SELECT a1.rowid FROM dubl_test a1, dubl_test a2 WHERE
a1.fname=a2.fname AND a1.age=a2.age AND a1.birthday=a2.birthday AND a1.rowid<>a2.rowid)

ესეც ესე… ე.ი. ჩვენ მივიღეთ 2 ცხრილი სადაც პირველში დუბლიკატებისგან გაცხრილული ჩანაწერები და მეორეში ის ჩანაწერები რომლებსაც უბრალოდ არ გააჩნდა დუბლიკატები. ეხლა მივიღოთ ეს ორი ცხრილისგან 1 ცხრილი რომელიც იქნება საბოლოო რეზულტატი ჩვენი ამოცანისა –

1
2
3
4
5
6
7
8
9
SELECT fname, age, birthday FROM (
SELECT a1.* FROM dubl_test a1, dubl_test a2 WHERE
a1.fname=a2.fname AND a1.age=a2.age AND a1.birthday=a2.birthday AND a1.rowid<>a2.rowid
) GROUP BY fname, age, birthday
UNION ALL
SELECT fname, age, birthday FROM dubl_test WHERE
rowid NOT IN
(SELECT a1.rowid FROM dubl_test a1, dubl_test a2 WHERE
a1.fname=a2.fname AND a1.age=a2.age AND a1.birthday=a2.birthday AND a1.rowid<>a2.rowid)

შედეგი –

1
2
3
aleko   |   25   |   19/11/2007
nino    |   27   |   13/11/2007
aleko   |   20   |   19/11/2007

კატეგორიებში: ORACLE, SQL - PL/SQL. |

დატოვე კომენტარი

...