SQL වැද්දෝ හා බීපු එවුන් වරෙල්ලා කෝ

hide_spider

Well-known member
  • Feb 10, 2014
    1,300
    726
    113
    SQL වැද්දෝ හා බීපු එවුන් වරෙල්ලා කෝ



















    මේකයි සීන් එක , table එකක rows වල column compare කරලා ඒ ඒ සමාන row විතරක් select karanne කොහොමද?


    උදාහරණ
    ID |caste
    001 | 1
    002 | 1,2
    003 | 2
    004 | 3

    මට ඕනේ මේකේ 1 හා 2 මේ විදියට select වෙන්න

    ID |samecasteid
    001 |002

    මේන් මේ විදියට කොහොමද බන් කරන්නේ?

    BMP EKAK WATH DAAPAN:(:(:(
     

    K_ZONE

    Well-known member
  • May 28, 2009
    5,173
    4,085
    113
    invoke db "Injected Memory"
    ඔය තියෙන Data Structure එක හැටියට නම් ඕක කරන්න නිකම්ම Join එකකින් වත් Sub Query එකකින් වත් බැ,

    වෙනම Stored procedure එකක් ලියන්න වෙනවා Virtual Tables වලට Data දාගෙන ගැට ටික ලිහාගෙන, data ටික පිලිවෙලකට හදාගෙන ඕක කරන්න,

    මොකද caste column එකෙ Values කිහිපයක්ම තියෙනවා Comma separated, ඉතින් මුලින්ම ඒක වෙන වෙනම ගන්න වෙනවා,

    PHP:
    DECLARE @Elakiri TABLE
        (
          ID VARCHAR(3) ,
          caste VARCHAR(50)
        )
        
    INSERT  INTO @Elakiri
            ( ID, caste )
    VALUES  ( '001', '1' ),
            ( '002', '1,2' ),
            ( '003', '2' ),
            ( '004', '3' )
    ඔතන ID එකයි caste එකයි අතර ඔයා අරන් තියෙන්නෙ 1 to 1 relationship එකක්. ඒත් ඇත්තටම එකම ID එකට caste දෙක තුනක් තියෙනවා වගෙ,

    ඒ නිසා එක්කො මුලින්ම 1 to Many විදියට Data ටික Insert කරගන්න මෙන්න මේ වගෙ,

    PHP:
    INSERT  INTO @Elakiri
            ( ID, caste )
    VALUES  ( '001', '1' ),
            ( '002', '1' ),
            ( '002', '2' ), <<
            ( '003', '2' ),
            ( '004', '3' )

    එහෙම නැත්නම් STORED PROCEDURE එකක් ඇතුලෙ Comma Separated values වෙනම Rows විදියට LOOP එකක් දාලා Insert කරගන්න Tmp Table එකකට හරි Variable Table එකකට හරි මොකක් හරි එකකට.

    එහෙම තිබුනා නම් ලේසියෙන්ම කරගන්න පුලුවන්, ඔය තියෙන විදියටනම් පොඩ්ඩක් මහන්සි වෙන්න වෙනවා ඔය වැඩේ කරගන්න

     
    Last edited:

    hide_spider

    Well-known member
  • Feb 10, 2014
    1,300
    726
    113
    විල්සන් මාමා;18987494 said:
    SELECT A.id, B.id AS samecasteid
    FROM test A
    INNER JOIN test B ON A.id = B.caste


    (test is the table name)

    Oka inner join ekakin thamai karanna puluwan
    Uda thiyena widiya poddak balapan

    thanks mchan
     

    hide_spider

    Well-known member
  • Feb 10, 2014
    1,300
    726
    113
    ඔය තියෙන Data Structure එක හැටියට නම් ඕක කරන්න නිකම්ම Join එකකින් වත් Sub Query එකකින් වත් බැ,

    වෙනම Stored procedure එකක් ලියන්න වෙනවා Virtual Tables වලට Data දාගෙන ගැට ටික ලිහාගෙන, data ටික පිලිවෙලකට හදාගෙන ඕක කරන්න,

    මොකද caste column එකෙ Values කිහිපයක්ම තියෙනවා Comma separated, ඉතින් මුලින්ම ඒක වෙන වෙනම ගන්න වෙනවා,

    PHP:
    DECLARE @Elakiri TABLE
        (
          ID VARCHAR(3) ,
          caste VARCHAR(50)
        )
        
    INSERT  INTO @Elakiri
            ( ID, caste )
    VALUES  ( '001', '1' ),
            ( '002', '1,2' ),
            ( '003', '2' ),
            ( '004', '3' )
    ඔතන ID එකයි caste එකයි අතර ඔයා අරන් තියෙන්නෙ 1 to 1 relationship එකක්. ඒත් ඇත්තටම එකම ID එකට caste දෙක තුනක් තියෙනවා වගෙ,

    ඒ නිසා එක්කො මුලින්ම 1 to Many විදියට Data ටික Insert කරගන්න මෙන්න මේ වගෙ,

    PHP:
    INSERT  INTO @Elakiri
            ( ID, caste )
    VALUES  ( '001', '1' ),
            ( '002', '1' ),
            ( '002', '2' ), <<
            ( '003', '2' ),
            ( '004', '3' )
    එහෙම නැත්නම් STORED PROCEDURE එකක් ඇතුලෙ Comma Separated values වෙනම Rows විදියට LOOP එකක් දාලා Insert කරගන්න Tmp Table එකකට හරි Variable Table එකකට හරි මොකක් හරි එකකට.

    එහෙම තිබුනා නම් ලේසියෙන්ම කරගන්න පුලුවන්, ඔය තියෙන විදියටනම් පොඩ්ඩක් මහන්සි වෙන්න වෙනවා ඔය වැඩේ කරගන්න


    thanks machan comment එකට one to many relationship එක තිබ්බනං වැඩේ පහසුයි එහෙනං