"LEFT_JOIN" 2 ตารางใน phpBB จะทำยังไงค่ะ

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
thatsawan
PHP VIP Members
PHP VIP Members
Posts: 27199
Joined: 31/03/2014 10:02 am
Contact:

"LEFT_JOIN" 2 ตารางใน phpBB จะทำยังไงค่ะ

Post by thatsawan »

[code=php]  $sql_ary = array(
                  'SELECT' => 'tp.*,t.forum_id, t.topic_title, t.topic_poster, t.topic_time, t.topic_first_poster_name',
                  'FROM'      => array(
                        'phpbb_m_topic_portal'         => 'tp',
                   ),    
                'LEFT_JOIN' => array(
                    array(
                        'FROM'  => array(TOPICS_TABLE => 't'),
                        'ON'    => 'tp.topic_id=t.topic_id',
                    ),
                ),
                'LEFT_JOIN' => array(
                    array(
                        'FROM'  => array(USERS_TABLE => 'u'),
                        'ON'    => 'u.user_id=tp.add_by',
                    ),
                ),
                'WHERE'     => "forum_id = ". $db->sql_escape(utf8_clean_string($search))." OR topic_title LIKE '%"
                                .$db->sql_escape(utf8_clean_string($search))."%'OR topic_poster LIKE '%"
                                .$db->sql_escape(utf8_clean_string($search))."%' OR topic_time LIKE '%"
                                .$db->sql_escape(utf8_clean_string($search))."%' OR topic_first_poster_name LIKE '%"
                                .$db->sql_escape(utf8_clean_string($search))."%' OR username LIKE '%"
                                .$db->sql_escape(utf8_clean_string($search))."%' ",
                'ODER BY'    => 'tp.potal_order DESC',
                );
                $sql = $db->sql_build_query('SELECT', $sql_ary);
                echo $sql; exit;
[/code]


SELECT tp.*,t.forum_id, t.topic_title, t.topic_poster, t.topic_time, t.topic_first_poster_name
FROM (phpbb_m_topic_portal tp) LEFT
JOIN phpbb_users u ON (u.user_id=tp.add_by)
WHERE forum_id = d
OR topic_title LIKE '%d%'
OR topic_poster LIKE '%d%'
OR topic_time LIKE '%d%'
OR topic_first_poster_name LIKE '%d%'
OR username LIKE '%d%'
User avatar
thatsawan
PHP VIP Members
PHP VIP Members
Posts: 27199
Joined: 31/03/2014 10:02 am
Contact:

Re: "LEFT_JOIN" 2 ตารางใน phpBB จะทำยังไงค่ะ

Post by thatsawan »

ดูตัวอย่างมาจากที่นี่
https://wiki.phpbb.com/Dbal.sql_build_query
User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 25906
Joined: 22/09/2008 6:18 pm
Contact:

Re: "LEFT_JOIN" 2 ตารางใน phpBB จะทำยังไงค่ะ

Post by mindphp »

tp., t.

หลัง WHERE
tp.ชื่อ field {เงื่อนไข} ค่า
AND/OR
t..ชื่อ field {เงื่อนไข} ค่า
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
offing
PHP VIP Members
PHP VIP Members
Posts: 1527
Joined: 18/08/2014 10:01 am

Re: "LEFT_JOIN" 2 ตารางใน phpBB จะทำยังไงค่ะ

Post by offing »

ตอน where เขียนด้วยคับว่า เอาตัวไหนตารางไหนมาเทียบ เช่น
topic_title เป็น tp.topic_title
User avatar
thatsawan
PHP VIP Members
PHP VIP Members
Posts: 27199
Joined: 31/03/2014 10:02 am
Contact:

Re: "LEFT_JOIN" 2 ตารางใน phpBB จะทำยังไงค่ะ

Post by thatsawan »

ผิดประเด็นเเย้ว
วิธี LEFT JOIN 2 ตาราง คือแบบนี้

Code: Select all

    $sql_ary = array(
                  'SELECT' => 'tp.*,t.forum_id, t.topic_title, t.topic_poster, t.topic_time, t.topic_first_poster_name',
                  'FROM'      => array(
                        'phpbb_m_topic_portal'         => 'tp',
                   ),    
                'LEFT_JOIN' => array(
                    array(
                        'FROM'  => array(TOPICS_TABLE => 't'),
                        'ON'    => 'tp.topic_id=t.topic_id',
                    ),
                      array(
                        'FROM'  => array(USERS_TABLE => 'u'),
                        'ON'    => 'u.user_id=tp.add_by',
                    ),
                ),
                'WHERE'     => "forum_id = ". $db->sql_escape(utf8_clean_string($search))." OR topic_title LIKE '%"
                                .$db->sql_escape(utf8_clean_string($search))."%'OR topic_poster LIKE '%"
                                .$db->sql_escape(utf8_clean_string($search))."%' OR topic_time LIKE '%"
                                .$db->sql_escape(utf8_clean_string($search))."%' OR topic_first_poster_name LIKE '%"
                                .$db->sql_escape(utf8_clean_string($search))."%' OR username LIKE '%"
                                .$db->sql_escape(utf8_clean_string($search))."%' ",
                'ODER BY'    => 'tp.potal_order DESC',
                );
User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 25906
Joined: 22/09/2008 6:18 pm
Contact:

Re: "LEFT_JOIN" 2 ตารางใน phpBB จะทำยังไงค่ะ

Post by mindphp »

เชื่อม ตอน JOIN
ตามตัวอย่าง คือ
tp.topic_id=t.topic_id
เป็นเงือน ไขสำหรับดึงค่าของสองตาราง
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - PHP”

Who is online

Users browsing this forum: Google [Bot] and 23 guests