Algorithm Help - Database Referral

MihiCherub

Well-known member
  • Sep 14, 2009
    18,856
    1
    9,604
    113
    Gampaha
    මේක රෙෆරල් program එකක්. අයිතිකාරයාට රෙෆරර් කෙනෙක් නෑ. අනිත් හැම රෙගිස්ටර් වෙන හැම යූසර් කෙනෙක්ටම අනිවා රෙෆරර් කෙනෙක් ඉන්නව. එකෙක් පමණයි.

    මගේ database එකේ ටේබල් එක තියෙන්නෙ මේ විදියට.. ටයිප් එක බොස් වෙන්නෙ පලවෙනි එකට විතරමයි. දැන් මේකෙ එක යූසර් කෙනෙක් තව කෙනෙකුට රෙෆරර් වෙනව.

    table_zpsnykpfay2.png


    මට ඕනෙ එක යූසර් කෙනෙක් ගත්තාම චේන් එකේ අන්තිම වෙනකම්ම ඉන්න රෙෆරර්ස්ල ටික ගන්න. ඒ කියන්නෙ රෙෆරර්ගෙ රෙෆරර්, රෙෆරර්ගෙ රෙෆරර් විදියට

    Ex -
    A002 ගත්තොත් A001
    A004 ගත්තොත් A002,A001
    A008 ගත්තොත් A006,A003,A001

    මේක ගන්න ක්‍රමයක් තමයි ඔනෙ.

    උදවු, bump දෙන හැමෝටම 14+ ගානෙ තමයි දෙන්න පුලුවන්.. :)
     

    thinking_guy

    Well-known member
  • Apr 16, 2011
    4,718
    2,737
    113
    උඹ දීල තියෙන රූල්ස් වල විදියට, බොසා (A001) තමයි කිසිම reference එකක් නැති චේන් එකේ අන්තිමට ඉන්න එකා. ඒ කියන්නෙ මොන user_id එක ගත්තත් අන්තිමට referrer ලව හොයාගෙන හොයාගෙන යද්දී ලූප් එක ඉවර වෙන්න ඕන A001 ගෙන්.

    උඹ කෝඩින් කරන භාෂාව මොකක්ද දන්නෙ නෑ. එත් Pseudo code එකක් නම් පල්ලෙහා තියෙන විදියට හදන්න පුළුවන්.

    UserId As String
    ReferrerId As String
    ReferrerList As List

    Input a value to UserId to search for.

    Do Until ReferrerId = "A001"

    ReferrerId = SELECT referrer_id FROM table WHERE user_id = UserId
    Add UserId to ReferrerList
    UserId = ReferrerId
    Loop


    සමහරවිට මේක SQL Procedure එකක් ලියන පුළුවන් උනානම් ලොකු රෙකොර්ඩ්ස් ගානක් හොයද්දි කාර්යක්ෂමතාව වැඩිවෙයි.
     
    Last edited:
    • Like
    Reactions: MihiCherub

    MihiCherub

    Well-known member
  • Sep 14, 2009
    18,856
    1
    9,604
    113
    Gampaha
    උඹ දීල තියෙන රූල්ස් වල විදියට, බොසා (A001) තමයි කිසිම reference එකක් නැති චේන් එකේ අන්තිමට ඉන්න එකා. ඒ කියන්නෙ මොන user_id එක ගත්තත් අන්තිමට referrer ලව හොයාගෙන හොයාගෙන යද්දී ලූප් එක ඉවර වෙන්න ඕන A001 ගෙන්.

    උඹ කෝඩින් කරන භාෂාව මොකක්ද දන්නෙ නෑ. එත් Pseudo code එකක් නම් පල්ලෙහා තියෙන විදියට හදන්න පුළුවන්.

    <b>UserId As String
    ReferrerId As String
    ReferrerList As List

    Input a value to UserId to search for.

    Do Until ReferrerId = "A001"
    ReferrerId = SELECT referrer_id FROM table WHERE user_id = UserId
    Add UserId to ReferrerList
    UserId = ReferrerId
    Loop</b>

    සමහරවිට මේක SQL Procedure එකක් ලියන පුළුවන් උනානම් ලොකු රෙකොර්ඩ්ස් ගානක් හොයද්දි කාර්යක්ෂමතාව වැඩිවෙයි.
    මේක හරියන්නෙ නෑ. මොකද මේ ඩේටබේස් එකෙ යූසර්ල ගොඩක් ඉන්නව. හැම යූසර් කෙනෙක්වම අප්ඩේට් කරන්න ඕනෙ. එතකොට එකින් එකට ඩේටබේස් එකට රික්වෙස්ට් යවන එක නම් ටිකක් අමාරුයි.
    MSQL JAVA
     

    thinking_guy

    Well-known member
  • Apr 16, 2011
    4,718
    2,737
    113
    මේක හරියන්නෙ නෑ. මොකද මේ ඩේටබේස් එකෙ යූසර්ල ගොඩක් ඉන්නව. හැම යූසර් කෙනෙක්වම අප්ඩේට් කරන්න ඕනෙ. එතකොට එකින් එකට ඩේටබේස් එකට රික්වෙස්ට් යවන එක නම් ටිකක් අමාරුයි.
    MSQL JAVA

    Table eke tiyena records tika data set ekakata daagena try karapan. Data set eke search karanna umbata wenama function ekak liyaganna weyi. Etta passe ena final resault eka db ekata update karanna puluwan.
     
    Last edited:

    DjSpK

    Well-known member
  • Nov 4, 2008
    5,298
    1,005
    113
    I'm Looking for Me !
    තව Table එකක් හදාගන්න Nodes කියලා Users Table ID එක Node ID එකත් එක්ක තියාගන්න .
    A001 Node1 Boss

    අනිත් එක Boss කියලා තියෙනවට වඩා වෙනිම්ම Table එකකට User Type එක Normalize වෙනවනම් ඉස්සරහට යද්දි (Software එක Develop වෙද්දි) ප්‍රශ්න අඩු වෙයි
     
    • Like
    Reactions: MihiCherub

    MihiCherub

    Well-known member
  • Sep 14, 2009
    18,856
    1
    9,604
    113
    Gampaha
    තව Table එකක් හදාගන්න Nodes කියලා Users Table ID එක Node ID එකත් එක්ක තියාගන්න .
    A001 Node1 Boss

    අනිත් එක Boss කියලා තියෙනවට වඩා වෙනිම්ම Table එකකට User Type එක Normalize වෙනවනම් ඉස්සරහට යද්දි (Software එක Develop වෙද්දි) ප්‍රශ්න අඩු වෙයි
    Normalize වෙන්න වෙන්න අපිට නම් ප්‍රශ්න වැඩී. ජොයින් කරන්න වෙනවනෙ.. තෑන්ක්ස්. මට කියපු එක තේරුනෙත් නෑ. :(
     

    MihiCherub

    Well-known member
  • Sep 14, 2009
    18,856
    1
    9,604
    113
    Gampaha
    Table eke tiyena records tika data set ekakata daagena try karapan. Data set eke search karanna umbata wenama function ekak liyaganna weyi. Etta passe ena final resault eka db ekata update karanna puluwan.
    අනේ මන්ද බන්. ඒකට මේකෙ ඉන්න අන්තිමය හොයා ගන්න ඕනෙනෙ. ඒ කියන්නෙ තවම රෙෆරර් කෙනෙක් වෙන්න බැරි උන අයිඩී ටික ගන්නෙ කොහොමද බන්?
     

    djmaxtor

    Well-known member
  • Dec 28, 2009
    3,526
    412
    83
    machan, umbe requirement ekanum mamahariyatama danne na. ath umba mae application ekata monawahari Java ORM Frameworks use karanawada?

    matath mae wagema problem ekak awith Hibernate (ORM Framework) walin wade godadamma. Hibernate walin hariytama Entity mapping eka karagaththata passe umbata Java Recursive method ekakin wade godadaaganna puluwan.

    habai umba existing application ekakata mukkuwak gahanna yanawanum mae wade tikak amaruwei machan. mula indanma develop karana ekaknum wade lesi..

    For an instance, all you have to do is, just defining an Entity class like follows and let the framework to handle the sophisticated SQL queries itself:

    Code:
    [B]@Entity
    public class User implements Serializable {
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        private Long id;
        @ManyToOne
        private User referee; // this should be NULL for the Boss
        @OneToMany(fetch = FetchType.EAGER,mappedBy="referee")
        private Collection<User> referrers;
        private String type;
    
        // Getters, Setters, etc...
    }[/B]
     
    Last edited:

    The_Killer

    Well-known member
  • Jan 20, 2014
    11,051
    2,196
    113
    WA, Straya 🇦🇺🦘
    www.elakiri.com
    • Like
    Reactions: MihiCherub