SQL Help 2

GT9

Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    මචංල මගේ ටේබල් එකක් තියෙනව. මේ වගේ

    item no - item name - item price - item category

    ඔන්න ඔය වගේ field තියෙන ටේබල් එකක්. මට ඕන මචංලා ටේබල් එක ඩිස්ප්ලේ කරන කොට ටේබල් එක ගැන අමතර දත්තත් ටේබල් එකට උඩින් පෙන්නන්න.

    උදා-

    ඔක්කොම අයිටම් කීයක් තියෙනවද?
    ඔක්කොම අයිටම් වල වටිනාකම කීයද?
    එකිනෙකට වෙනස් කැටගරි කීයක් තියෙනවද?

    ඔන්න ඔය වගේ දේවල් :D

    ඕක කරන්න පුලුවන් ඔය දැන ගන්න ඕන එකක් ගානේ ඩේටබේස් එක query කරල දත්ත අරන් පෙන්නල.

    නමුත් හිතන්න ටේබල් එකේ fields 15 ක් විතර තියෙනව කියල :shocked: ඉතින් ඔය ගොඩක් ෆීල්ඩ්වලට අදාල ඉහත මම දැම්ම වගේ දේවල් ටේබල් එක පෙන්නද්දිම ඊට උඩින් පෙන්නන්න ගියොත් සෑහෙන්න ඩේටබේස් කෝල් තොගයක් වදිනව. :shocked::shocked::shocked:

    කොහොමද මචං මේක අවම කරගෙන වැඩේ කරගන්නේ? :shocked::shocked::shocked:
     

    DJ31K

    Active member
  • Apr 20, 2007
    413
    33
    28
    Table eka pennanne windows hari web walanam. Full table eka retrieve karala summary karala pennanna code eken.
     

    knight11

    Active member
  • Jun 1, 2011
    586
    108
    43
    මචංල මගේ ටේබල් ....

    ඔක්කොම අයිටම් කීයක් තියෙනවද?
    ඔක්කොම අයිටම් වල වටිනාකම කීයද?
    එකිනෙකට වෙනස් කැටගරි කීයක් තියෙනවද?

    ..

    ඔක්කොම අයිටම් කීයක් තියෙනවද? - count()
    ඔක්කොම අයිටම් වල වටිනාකම කීයද? - sum()
    එකිනෙකට වෙනස් කැටගරි කීයක් තියෙනවද? - select distinct <fieldName>

    select count(distinct
    <fieldName>)
     

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    Table eka pennanne windows hari web walanam. Full table eka retrieve karala summary karala pennanna code eken.

    මචං එක එක කොලම් එකට අදාල ඩේටා වෙන වෙනම ඇරේ වලට දාගෙන ඒ ඇරේ වෙනම process කරල පෙන්නුවනම් කියලද ඔයා කියන්නේ? :D:yes: ඒකනම් මචං එළ වගේ. :D

    කොහොමත් ටේබල් sort කරන කරන වාරයක් පාසා ඩෙට බේස් එකට db calls වදිනව. :shocked::eek::sorry:
     

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]

    ඔක්කොම අයිටම් කීයක් තියෙනවද? - count()
    ඔක්කොම අයිටම් වල වටිනාකම කීයද? - sum()
    එකිනෙකට වෙනස් කැටගරි කීයක් තියෙනවද? - select distinct <fieldName>

    select count(distinct
    <fieldName>)

    ඔය වැඩ ටික කරගන්න විදිය මම දන්නව. මගේ ගැටලුව ඒක නෙමේ. :D
     

    knight11

    Active member
  • Jun 1, 2011
    586
    108
    43
    මචංල ...

    ඕක කරන්න පුලුවන් ඔය දැන ගන්න ඕන එකක් ගානේ ඩේටබේස් එක query කරල දත්ත අරන් පෙන්නල.

    නමුත් හිතන්න ටේබල් එකේ fields 15 ක් විතර තියෙනව කියල :shocked: ඉතින් ඔය ගොඩක් ෆීල්ඩ්වලට අදාල ඉහත මම දැම්ම වගේ දේවල් ටේබල් එක පෙන්නද්දිම ඊට උඩින් පෙන්නන්න ගියොත් සෑහෙන්න ඩේටබේස් කෝල් තොගයක් වදිනව. :shocked::shocked::shocked:

    ...

    so retrieve all data in one query
     

    CustomerSupport

    Well-known member
  • Mar 21, 2016
    2,404
    1,515
    113
    මචං එක එක කොලම් එකට අදාල ඩේටා වෙන වෙනම ඇරේ වලට දාගෙන ඒ ඇරේ වෙනම process කරල පෙන්නුවනම් කියලද ඔයා කියන්නේ? :D:yes: ඒකනම් මචං එළ වගේ. :D

    කොහොමත් ටේබල් sort කරන කරන වාරයක් පාසා ඩෙට බේස් එකට db calls වදිනව. :shocked::eek::sorry:
    That is exactly what your database does, except that it can do it a lot more efficiently.
     

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    so retrieve all data in one query

    ඔව් මචං එක query එකෙන් තමයි ටේබල් එක පෙන්නන්නේ. ඒක නමේ ගැටලුව. මට තව ඕන ටේබල් එක පෙන්නන ගමන් ඔය ත්‍රෙඩ් එකේ දාල තියෙන process කරපු fields වලට අදාල දත්තත් ටේබල් එකට උඩින් පෙන්නන්.

    දැන්නම් අර ත්‍රෙඩ් එකේ යාලුවෙක් දාපු රිප්ලයි එකෙන් අයිඩියා එකක් ආව. අරේ වලට ලෝඩ් කරන් අරේ ටික process කරල වැඩේ කරගන්න. බලමු. :D:yes:
     

    DJ31K

    Active member
  • Apr 20, 2007
    413
    33
    28
    මචං එක එක කොලම් එකට අදාල ඩේටා වෙන වෙනම ඇරේ වලට දාගෙන ඒ ඇරේ වෙනම process කරල පෙන්නුවනම් කියලද ඔයා කියන්නේ? :D:yes: ඒකනම් මචං එළ වගේ. :D

    කොහොමත් ටේබල් sort කරන කරන වාරයක් පාසා ඩෙට බේස් එකට db calls වදිනව. :shocked::eek::sorry:

    Thanata awashya widihata karanna. Web nam session eke thiyanganna windowsnam table variable ekaka thiyaganna.:D
     
    • Like
    Reactions: GT9

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    Thanata awashya widihata karanna. Web nam session eke thiyanganna windowsnam table variable ekaka thiyaganna.:D

    එලාස්. සෙෂන් එකකට දා ගත්තනම් එක db call එකෙන් සෑහෙන්න වැඩ කරගන්න පුලුවන් තමයි. :D:D:D විනාඩි 30කට සැරයක් අලුතින් data asign වෙන session එකකට ඩේට දාගත්නම් හරි වගේ. :D
     

    twisted

    Well-known member
  • Feb 21, 2008
    34,398
    818
    113
    upon purple clouds
    use subquries like below

    select itemno,name,category,(select count(name) from items i2 where i2.itemid = i1.itemid
    group by itemid) totalcount
    from items i1
     

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    1. Create a view for the summary
    OR
    2. Write a stored proc

    අඩේ view එකක් ඒකටම හදා ගත්තත් ඇඩිෂනල් 1 db call එකක් විතරයි වදින්නේ. මේකත් පට්ට :D:yes:

    use subquries like below

    select itemno,name,category,(select count(name) from items i2 where i2.itemid = i1.itemid
    group by itemid) totalcount
    from items i1

    එළකිරි මචෝ. මේ විදියත් එළ. ඩේට ගන්න ටේබල් view එක පිළිවෙලට තියා ගන්න හින්ද ඇඩිෂනල් fields create කරන්නනම් අදහසක් නෑ. නමුත් ඒකටම view එකක් අරන් වැඩේ කරන්න කියල බැලුවේ. තෑන්ක්ස් :D
     

    knight11

    Active member
  • Jun 1, 2011
    586
    108
    43
    ඔව් මචං එක query එකෙන් තමයි ටේබල් එක පෙන්නන්නේ. ඒක නමේ ගැටලුව. මට තව ඕන ටේබල් එක පෙන්නන ගමන් ඔය ත්‍රෙඩ් එකේ දාල තියෙන process කරපු fields වලට අදාල දත්තත් ටේබල් එකට උඩින් පෙන්නන්.

    දැන්නම් අර ත්‍රෙඩ් එකේ යාලුවෙක් දාපු රිප්ලයි එකෙන් අයිඩියා එකක් ආව. අරේ වලට ලෝඩ් කරන් අරේ ටික process කරල වැඩේ කරගන්න. බලමු. :D:yes:

    .net ?

    use dataset populated by sql data adapter. perform count, sum on the dataset. better than arrays.
    Entity Framework can be used easily. :cool::yes:

    Also consider that storing large size data set in the memory affect to the memory and network bandwidth / server processing power (for web apps).

    Still i think doing all sorting, counting etc in the DB is more efficient than performing on disconnected dataset on the web server. try to build a statistics view which contain all counts , sums etc. for you data table and retrieve from it.
     
    Last edited:

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    .net ?

    use dataset populated by sql data adapter. perform count, sum on the dataset. better than arrays.
    Entity Framework can be used easily. :cool::yes:

    Also consider that storing large size data set in the memory affect to the memory and network bandwidth / server processing power (for web apps).

    මේක මචං වෙබ් එකක්. ඔව් මචං ඒත් shared hosting වල db call limit එකක් තියෙනව මචං. ඒකයි Processing power ටිකක් වැඩිපුර ගියත් db call ගැන ගොඩක් වද වෙන්න වෙලා තියෙන්නේ. :shocked::(
     

    knight11

    Active member
  • Jun 1, 2011
    586
    108
    43
    මේක මචං වෙබ් එකක්. ඔව් මචං ඒත් shared hosting වල db call limit එකක් තියෙනව මචං. ඒකයි Processing power ටිකක් වැඩිපුර ගියත් db call ගැන ගොඩක් වද වෙන්න වෙලා තියෙන්නේ. :shocked::(

    ASP.NET MVC ද? web forms ද?
    db call limit තියෙනවා නම් EF ගන්න එපා. row sql + ADO.NET වලින් කරන්න. original data table එකට අදාලව summery / statistics view එකක් or SP එකක් හදලා ඒකෙන් එකපාර data ගන්න පුළුවන් ද බලන්න.