SQL help

GT9

Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    මචංල මගේ ටේබල් එකක් තියෙනව. ඒකේ members ලගේ username, email විතරක් තියෙනව.
    තව ටේබල් එකක් තියෙනව එකේ තමයි members ලගේ firstname , lastname වගේ දාල තියෙන්නේ. හැබැයි දාල තියෙන්නේ key value කියන field 2 ක් තියෙන ටේබල් එකක. ඒ ටේබල් එකේ member_id කියල field එකකුත් තියෙනව.

    මට මචං සියලුම මෙබ්බර්ස්ලගේ email address ටික.

    select email from members orderby id asc;

    කියල ගන්න පුලුවන්නේ. මට මචං ඕන වෙලා තියෙනව මේ email address එකත් එක්කම අදාල මෙබ්බර් ගේ first name and last name එකත් ගන්න.

    මම මේ තොරතුරු first_name, last_name වගේ field 2ක නොදා key and value ආකාරයේ ටේබල් එකක දාල තියෙන නිසා. ගන්න තේරෙන්නෑ කලින් ටේබල් එකේ දත්ත එක්ක ජොයින් කරල.

    මේක කරන හැටි කියල දෙන්න පුලුවනිනම් ගොඩක් වටිනව. :)
     

    Ayeshlive

    Well-known member
  • Jul 1, 2011
    10,570
    943
    113
    *̶͑̾̾​̅ͫ͏̙̤g͛͆̾ͫ̑͆&
    Code:
    SELECT m.mail, m.member_id, fn.value AS first_name, ln.value AS last_name
    FROM members m
    LEFT JOIN userdata fn ON fn.member_id = m.member_id AND fn.key = first_name
    LEFT JOIN userdata ln ON ln.member_id = m.member_id AND ln.key = last_name


    Userdata = name of the table containing user data. Key = field name of the field containing key. Same goes for value. Replace accordingly.
     
    Last edited:

    hackerzero

    Well-known member
  • Dec 27, 2015
    1,508
    268
    83
    http://jeewangallery.blogspot.com
    Code:
    SELECT m.mail, m.member_id, fn.value AS first_name, ln.value AS last_name
    FROM members m
    LEFT JOIN userdata fn ON fn.member_id = m.member_id AND fn.key = first_name
    LEFT JOIN userdata ln ON ln.member_id = m.member_id AND ln.key = last_name


    Userdata = name of the table containing user data. Key = field name of the field containing key. Same goes for value. Replace accordingly.

    :)
     

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    Code:
    SELECT m.mail, m.member_id, fn.value AS first_name, ln.value AS last_name
    FROM members m
    LEFT JOIN userdata fn ON fn.member_id = m.member_id AND fn.key = first_name
    LEFT JOIN userdata ln ON ln.member_id = m.member_id AND ln.key = last_name


    Userdata = name of the table containing user data. Key = field name of the field containing key. Same goes for value. Replace accordingly.

    මචං fn and ln කියල තියෙන්නේ ඉබේ අසයින් වෙන දෙකක්ද? මොකද members and member_metadata කියල ටේබල් දෙකක් විතරයි තියෙන්නේ. member_meta_data ටේබල් එකේ එකම user id එකකට රෙකෝඩ් දෙකක් වදිනව. එකක් key -> first_name අනික key -> last_name.

    මචං ඉහත කෝඩ් එකේ userdata කියල තියෙන්නේ මොකද්ද මචං?

    ඔයා කියන විදිය තමයි හරි මචං. බට් තේරුම්ගන්න පොඩ්ඩක් අමාරුයි.

    මචං member and member_meta_data කියන ටේබල් නේම් දෙක බාවිතා කරල මට ඉහත කෝඩ් එක නැවත ගහල දෙනවද?

    මේටික තමයි මට සිලෙක්ට් කරගන්න ඕන.

    member table එකේ තියෙන සියලුම email select වෙන විදියට. member ටේබල් එකේ email field එකයි.

    ඒ email එකට අදාල මෙම්බර් table එකේ id එක තියෙනවනේ. ඒකට ගැලපෙන member_meta_data table එකේ key field එකේ first_name එකට අදාල value field එකයි last_name key එක අදාල value එකයි ගන්න ඕන.

    තෑන්ක්ස්. :)
     

    Ayeshlive

    Well-known member
  • Jul 1, 2011
    10,570
    943
    113
    *̶͑̾̾​̅ͫ͏̙̤g͛͆̾ͫ̑͆&
    මචං fn and ln කියල තියෙන්නේ ඉබේ අසයින් වෙන දෙකක්ද? මොකද members and member_metadata කියල ටේබල් දෙකක් විතරයි තියෙන්නේ. member_meta_data ටේබල් එකේ එකම user id එකකට රෙකෝඩ් දෙකක් වදිනව. එකක් key -> first_name අනික key -> last_name.

    මචං ඉහත කෝඩ් එකේ userdata කියල තියෙන්නේ මොකද්ද මචං?

    ඔයා කියන විදිය තමයි හරි මචං. බට් තේරුම්ගන්න පොඩ්ඩක් අමාරුයි.

    මචං member and member_meta_data කියන ටේබල් නේම් දෙක බාවිතා කරල මට ඉහත කෝඩ් එක නැවත ගහල දෙනවද?

    මේටික තමයි මට සිලෙක්ට් කරගන්න ඕන.

    member table එකේ තියෙන සියලුම email select වෙන විදියට. member ටේබල් එකේ email field එකයි.

    ඒ email එකට අදාල මෙම්බර් table එකේ id එක තියෙනවනේ. ඒකට ගැලපෙන member_meta_data table එකේ key field එකේ first_name එකට අදාල value field එකයි last_name key එක අදාල value එකයි ගන්න ඕන.

    තෑන්ක්ස්. :)

    Phone eken ban EK awe. 9pm wenakota dannam.
     

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    Code:
    SELECT `members`.`ID`, `members`.`username`, `members`.`email`, `members`.`registered`, `members_meta_1`.`value` AS `first_name`, `members_meta_2`.`value` AS `last_name` FROM `members` 
    
    LEFT JOIN `members_meta` AS `members_meta_1` ON `members`.`ID`=`members_meta_1`.`user_id` AND `members_meta_1`.`key`='first_name' 
    
    LEFT JOIN `members_meta` AS `members_meta_2` ON `members`.`ID`=`members_meta_2`.`user_id` AND `members_meta_2`.`key`='last_name' 
    
    ORDER BY `members`.`ID` ASC;

    මචං ඔය කෝඩ් එ රන් කරාම.

    Unknown column 'members_meta_1.value' in 'field list'


    කියල error එකක් එනව. :nerd:
     

    hspa3.5

    Well-known member
  • Sep 23, 2009
    4,539
    543
    113
    my world
    http://elakiri.com/forum/showthread.php?p=19795285#post19795285

    ubata thiyenneth oya seen eka nam PM ekak dapan..

    member = email address eka thiyena table eka
    member_details= firstname lastname thiyena table eka



    select
    (select md.value from member_details md where md.key='firstname' and md.member_id=m.member_id
    ) as first_name,

    (select md.value from member_details md where md.key='lastname' and md.member_id=m.member_id
    ) as last_name

    ,username, email from member m, member_details d
    where m.member_id=d.member_id and m.email='[email protected]';


    ohoma thama pute ganna wenne..pahadili nathnam PM ekak dapan..
     
    Last edited:
    • Like
    Reactions: GT9

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    උදව් කරපු හැමෝටම බොහෝම ස්තූතියි. වැඩේ ගොඩදාගත්ත. එක අකුරක් මිසින් වෙලානේ. :P:D
     

    Ayeshlive

    Well-known member
  • Jul 1, 2011
    10,570
    943
    113
    *̶͑̾̾​̅ͫ͏̙̤g͛͆̾ͫ̑͆&
    මචං fn and ln කියල තියෙන්නේ ඉබේ අසයින් වෙන දෙකක්ද? මොකද members and member_metadata කියල ටේබල් දෙකක් විතරයි තියෙන්නේ. member_meta_data ටේබල් එකේ එකම user id එකකට රෙකෝඩ් දෙකක් වදිනව. එකක් key -> first_name අනික key -> last_name.

    මචං ඉහත කෝඩ් එකේ userdata කියල තියෙන්නේ මොකද්ද මචං?

    ඔයා කියන විදිය තමයි හරි මචං. බට් තේරුම්ගන්න පොඩ්ඩක් අමාරුයි.

    මචං member and member_meta_data කියන ටේබල් නේම් දෙක බාවිතා කරල මට ඉහත කෝඩ් එක නැවත ගහල දෙනවද?

    මේටික තමයි මට සිලෙක්ට් කරගන්න ඕන.

    member table එකේ තියෙන සියලුම email select වෙන විදියට. member ටේබල් එකේ email field එකයි.

    ඒ email එකට අදාල මෙම්බර් table එකේ id එක තියෙනවනේ. ඒකට ගැලපෙන member_meta_data table එකේ key field එකේ first_name එකට අදාල value field එකයි last_name key එක අදාල value එකයි ගන්න ඕන.

    තෑන්ක්ස්. :)


    MySQL wala "key" kiyala field name ekak thiyenna widihak na eka reserved keyword ekak nisa.

    Mama red colour eken danne oyage thiyena tables and fields.

    SELECT m.mail, m.member_id, fn.value AS first_name, ln.value AS last_name FROM members m LEFT JOIN member_meta_data fn ON fn.member_id = m.member_id AND fn.key = first_name LEFT JOIN member_meta_data ln ON ln.member_id = m.member_id AND ln.key = last_name
    purple colour eken thiyenne table eke thiyena data.
    red colour eken tiyuenne table field names.
    green colour eken thiyenne table names.
     

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    MySQL wala "key" kiyala field name ekak thiyenna widihak na eka reserved keyword ekak nisa.

    Mama red colour eken danne oyage thiyena tables and fields.

    SELECT m.mail, m.member_id, fn.value AS first_name, ln.value AS last_name FROM members m LEFT JOIN member_meta_data fn ON fn.member_id = m.member_id AND fn.key = first_name LEFT JOIN member_meta_data ln ON ln.member_id = m.member_id AND ln.key = last_name
    purple colour eken thiyenne table eke thiyena data.
    red colour eken tiyuenne table field names.
    green colour eken thiyenne table names.

    තෑන්ක්ස් මචෝ. ඔයාගේ syntax එහාට මෙහාට කරල වැඩේ ගොඩදාගත්ත. :D
     

    isurueka

    Well-known member
  • Jul 26, 2008
    14,214
    347
    83
    MySQL wala "key" kiyala field name ekak thiyenna widihak na eka reserved keyword ekak nisa.

    Mama red colour eken danne oyage thiyena tables and fields.

    SELECT m.mail, m.member_id, fn.value AS first_name, ln.value AS last_name FROM members m LEFT JOIN member_meta_data fn ON fn.member_id = m.member_id AND fn.key = first_name LEFT JOIN member_meta_data ln ON ln.member_id = m.member_id AND ln.key = last_name
    purple colour eken thiyenne table eke thiyena data.
    red colour eken tiyuenne table field names.
    green colour eken thiyenne table names.

    මැදින් පැන්නට සොරි....අයේෂ් දාල තියන alias මෙයාට හරියට තේරිලා නැති බවක් තමයි පේන්නේ :)
     

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    මැදින් පැන්නට සොරි....අයේෂ් දාල තියන alias මෙයාට හරියට තේරිලා නැති බවක් තමයි පේන්නේ :)

    නෑ මචං ඒකෙන් තමයි මම ගොඩදාගත්තේ.
     

    isurueka

    Well-known member
  • Jul 26, 2008
    14,214
    347
    83
    Goda kalekin ban Elakiri eke dakke? Koheda gihin hitiye?

    ජොබ් එකත් එක්ක වෙලාව අඩුයි බං :dull: අද මේ එළකිරි ආවෙත් අසනීප වෙලා ගෙදර ආපු නිසා :oo: