หัวข้อ: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: itmaiz ที่ 21 พฤษภาคม 2017, 18:27:12 โค้ดตามนี้ครับ รบกวนช่วยหน่อยครับผมแก้ไม่ตกครับว่าทำไมเวลา Search ข้อมูลตามวันที่ไม่แสดงครับ :-X
โค๊ด: $query = " หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: p44n ที่ 21 พฤษภาคม 2017, 19:12:11 $query = "
SELECT T1.id ,T1.orders_dates ,SUM(T2.order_detail_quantity * T2.order_detail_price) total FROM orders AS T1 INNER JOIN order_details AS T2 ON T1.id = T2.order_id GROUP BY T1.id,T1.orders_dates WHERE T1.orders_dates BETWEEN '".$_POST["from_date"]."' AND '".$_POST["to_date"]."' "; $result = mysqli_query($connect, $query); หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: infamous ที่ 21 พฤษภาคม 2017, 20:45:04 โค้ดตามนี้ครับ รบกวนช่วยหน่อยครับผมแก้ไม่ตกครับว่าทำไมเวลา Search ข้อมูลตามวันที่ไม่แสดงครับ :-X โค๊ด: $query = " เวลาท่านใช้ AS ... ท่านต้องเอา alias มาใช้กำหนดข้างหน้าในแต่ละ column ของ tb นั้นด้วยนะครับ เช่น blash_tb.blah_column_name หวังว่าคงไม่งงนะครับ **โปรแกรมมิ่งไม่ใช่แค่ copy&paste หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: affsom ที่ 21 พฤษภาคม 2017, 21:54:32 ON ควรอยู่หลังการ JOIN
เมื่อกำหนด AS ควรใส่ alias ที่หน้าColumnที่จะเลือก แตถ้า JOIN แล้วcolumnไม่ซ้ำก็ไม่ต้องใส่ alias ประมาณนี้ โค๊ด: $query = " column => order_detail_quantity กับ column => order_detail_price อยู่ที่ตารางใหน ถ้าอยู่ orders ก็ คือ T1. ถ้าอยู่ order_details ก็ คือ T2. แต่จากชื่อที่ตั้งก็น่าจะยุ order_details หรือลองเปลียนเป็น LEFT JOIN ผมชอบใช้มันดึงcolumnออกมาได้มากกว่า แต่ต้องดูว่าข้อมูลที่จะใช้จำเป็นหรือป่าวด้วยนะครับ :) :) ผิดถูกขออภัยมือใหม่เหมือนกัน หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: rapiz ที่ 21 พฤษภาคม 2017, 23:19:12 ON ควรอยู่หลังการ JOIN เมื่อกำหนด AS ควรใส่ alias ที่หน้าColumnที่จะเลือก แตถ้า JOIN แล้วcolumnไม่ซ้ำก็ไม่ต้องใส่ alias ประมาณนี้ โค๊ด: $query = " column => order_detail_quantity กับ column => order_detail_price อยู่ที่ตารางใหน ถ้าอยู่ orders ก็ คือ T1. ถ้าอยู่ order_details ก็ คือ T2. แต่จากชื่อที่ตั้งก็น่าจะยุ order_details หรือลองเปลียนเป็น LEFT JOIN ผมชอบใช้มันดึงcolumnออกมาได้มากกว่า แต่ต้องดูว่าข้อมูลที่จะใช้จำเป็นหรือป่าวด้วยนะครับ :) :) ผิดถูกขออภัยมือใหม่เหมือนกัน หรือลองเปลียนเป็น LEFT JOIN ผมชอบใช้มันดึงcolumnออกมาได้มากกว่า ดูไม่ค่อย make sense เลยครับ left join - ดึงตารางซ้ายมาโช หาก a.a ไม่เท่ากับ b.a ก็ยังจะโช data ด้านขวา โดยที่ field ด้านซ้ายจะเป็น NULL inner join - หาก ตาราง a.a ไม่เท่ากับ b.a ก็ return 0 row ครับ ควรจะเลือกให้ถูกต้องนะครับ หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: affsom ที่ 21 พฤษภาคม 2017, 23:36:51 ON ควรอยู่หลังการ JOIN เมื่อกำหนด AS ควรใส่ alias ที่หน้าColumnที่จะเลือก แตถ้า JOIN แล้วcolumnไม่ซ้ำก็ไม่ต้องใส่ alias ประมาณนี้ โค๊ด: $query = " column => order_detail_quantity กับ column => order_detail_price อยู่ที่ตารางใหน ถ้าอยู่ orders ก็ คือ T1. ถ้าอยู่ order_details ก็ คือ T2. แต่จากชื่อที่ตั้งก็น่าจะยุ order_details หรือลองเปลียนเป็น LEFT JOIN ผมชอบใช้มันดึงcolumnออกมาได้มากกว่า แต่ต้องดูว่าข้อมูลที่จะใช้จำเป็นหรือป่าวด้วยนะครับ :) :) ผิดถูกขออภัยมือใหม่เหมือนกัน หรือลองเปลียนเป็น LEFT JOIN ผมชอบใช้มันดึงcolumnออกมาได้มากกว่า ดูไม่ค่อย make sense เลยครับ left join - ดึงตารางซ้ายมาโช หาก a.a ไม่เท่ากับ b.a ก็ยังจะโช data ด้านขวา โดยที่ field ด้านซ้ายจะเป็น NULL inner join - หาก ตาราง a.a ไม่เท่ากับ b.a ก็ return 0 row ครับ ควรจะเลือกให้ถูกต้องนะครับ ขอบคุณครับ หัดเหมือนกัน ได้ความรู้มาเพิ่ม คือปกติใช้ LEFT มาตลอด หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: itmaiz ที่ 22 พฤษภาคม 2017, 09:06:46 ON ควรอยู่หลังการ JOIN ผมลองทำแล้วครับไม่ได้เหมือนเดิมผม เมื่อกำหนด AS ควรใส่ alias ที่หน้าColumnที่จะเลือก แตถ้า JOIN แล้วcolumnไม่ซ้ำก็ไม่ต้องใส่ alias ประมาณนี้ โค๊ด: $query = " column => order_detail_quantity กับ column => order_detail_price อยู่ที่ตารางใหน ถ้าอยู่ orders ก็ คือ T1. ถ้าอยู่ order_details ก็ คือ T2. แต่จากชื่อที่ตั้งก็น่าจะยุ order_details หรือลองเปลียนเป็น LEFT JOIN ผมชอบใช้มันดึงcolumnออกมาได้มากกว่า แต่ต้องดูว่าข้อมูลที่จะใช้จำเป็นหรือป่าวด้วยนะครับ :) :) ผิดถูกขออภัยมือใหม่เหมือนกัน หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: itmaiz ที่ 22 พฤษภาคม 2017, 09:07:51 โค้ดตามนี้ครับ รบกวนช่วยหน่อยครับผมแก้ไม่ตกครับว่าทำไมเวลา Search ข้อมูลตามวันที่ไม่แสดงครับ :-X โค๊ด: $query = " เวลาท่านใช้ AS ... ท่านต้องเอา alias มาใช้กำหนดข้างหน้าในแต่ละ column ของ tb นั้นด้วยนะครับ เช่น blash_tb.blah_column_name หวังว่าคงไม่งงนะครับ **โปรแกรมมิ่งไม่ใช่แค่ copy&paste หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: infamous ที่ 22 พฤษภาคม 2017, 14:46:42 โค้ดตามนี้ครับ รบกวนช่วยหน่อยครับผมแก้ไม่ตกครับว่าทำไมเวลา Search ข้อมูลตามวันที่ไม่แสดงครับ :-X โค๊ด: $query = " เวลาท่านใช้ AS ... ท่านต้องเอา alias มาใช้กำหนดข้างหน้าในแต่ละ column ของ tb นั้นด้วยนะครับ เช่น blash_tb.blah_column_name หวังว่าคงไม่งงนะครับ **โปรแกรมมิ่งไม่ใช่แค่ copy&paste ผมเอามาใส่แล้วแต่ไม่ได้เหมือนเดิมครับ ผมเคยแจ้งแล้วนะครับ ว่าโจทย์ท่าน ท่านต้องลองทดสอบดู และหาข้อผิดพลาดมันควรจะอยู่ตรงไหน ในกรณีที่ผลของ query ไม่ได้เป็นไปตามที่ท่านตั้งใจเอาไว้หรืออยากให้เป็น(คิดเอง ทำเอง แก้เอง) ซึ่งคำตอบก็มีท่านอื่นๆ ได้ใบ้ไปหมดแล้ว(สำหรับ mysql basic) อันนี้ต้องงมต่อครับ ไม่ใช่ copy & paste แล้วรัน แล้วผลลัพธ์ยังไม่ได้อีก แล้วมาโพสตามต่อ นั่นแสดงว่า ท่านไม่ได้หาข้อมูล หรือมีพื้นฐานเกี่ยวกับ mysql หรือเทคนิคการดัดแปลงเลย ใช่ครับวันนี้ท่านมีปัญหา มาโพสแล้วมีเทพ(และเทพมั่วซั่วมาตอบแบบไม่รู้หลักการจริงๆ) ท่านอาจจะโชคดีไปถ้าเกิดมัน(ฟลุ๊ค)ใช้งานได้ขึ้นมา แต่วันอื่นๆในชีวิตการเขียนโปรแกรมของท่านล่ะครับ ท่านจะทำยังไง มาโพสถามอีกหรือ? == เข้าประเด็น === โจทย์แบบนี้มันแค่การดึงรายการมาทำ report/summary เท่านั้น ไม่ได้ยากเกินความสามารถท่านหรอกครับ แค่ join 2-3 ตาราง ผมออกมาทำงานจริงๆเคย join 6-7 ตารางแหน่ะครับวิ่งฉิวๆ mysql มันไม่ได้ฉลาดมาก แต่ก็ไม่โง่จนเกินไป ถ้าอันนี้ไม่ได้ ลองแบบอื่นดูครับ สังเกตุผลลัพธ์ไปเรื่อยๆ แล้วท่านจะจับทางมันได้ โจทย์ไหนๆ ดูแปปเดียวก็ทำได้แล้ว ฝึกทำบ่อยๆ เดวก็ชิน พยายามหาโจทย์มาลองทำเยอะๆ (ตอนเรียนวิทย์คอมพ์ผมไม่ได้ออกไปไหนเลย) ปล อันนี้ผมไม่ได้ตำหนิท่านนะครับ ดีใจที่ท่านสนใจในงานโปรแกรมมิ่งด้วยซ้ำ (ข้อความด้านบนจะเป็นส่วนหนึ่งของคำพูดอ.ที่เคยสอนผมสมัยเรียน ซึ่งตอนนั้นผมรู้สึกแย่มาก แต่ตอนนี้คิดได้แล้ว) ส่วนด้านล่างนี้ผมลองทำเป็นตัวอย่างให้ดูครับว่า เวลาเราจะดึงข้อมูลที่มีการ join เพื่อทำ report/summary นั้น สามารถทำอย่างไรได้บ้าง == tables schema for testing == โค๊ด: CREATE TABLE IF NOT EXISTS `oc_order` ( ส่วนด้านล่างจะเป็นตัวอย่างคำสั่ง query ครับ (nested query) โค๊ด: select order_id,sum(quantity) as qty,sum(sub_total) as total from ถ้าท่านยังมองภาพไม่ออกไปลิงค์ http://sqlfiddle.com/#!9/f19db1/11 ครับ ผมทำเป็นตัวอย่างให้ดูแบบง่ายๆแล้ว หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: haijai.com ที่ 22 พฤษภาคม 2017, 15:13:33 โค้ดตามนี้ครับ รบกวนช่วยหน่อยครับผมแก้ไม่ตกครับว่าทำไมเวลา Search ข้อมูลตามวันที่ไม่แสดงครับ :-X โค๊ด: $query = " เอา Database ของ orders กับ order_details มาดูโหน่ยสิครับ ถ้าดูโค้ดลอยๆ ถ้าอักษรผิดตัวเดียวมันก้อเปิดไม่ได้อยู่แล้ว :wanwan012: หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: itmaiz ที่ 22 พฤษภาคม 2017, 18:28:06 โค้ดตามนี้ครับ รบกวนช่วยหน่อยครับผมแก้ไม่ตกครับว่าทำไมเวลา Search ข้อมูลตามวันที่ไม่แสดงครับ :-X โค๊ด: $query = " เอา Database ของ orders กับ order_details มาดูโหน่ยสิครับ ถ้าดูโค้ดลอยๆ ถ้าอักษรผิดตัวเดียวมันก้อเปิดไม่ได้อยู่แล้ว :wanwan012: พรุ่งนี้ผมจะแคปหน้าจอให้ครับผม หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: itmaiz ที่ 22 พฤษภาคม 2017, 18:31:45 โค้ดตามนี้ครับ รบกวนช่วยหน่อยครับผมแก้ไม่ตกครับว่าทำไมเวลา Search ข้อมูลตามวันที่ไม่แสดงครับ :-X โค๊ด: $query = " เวลาท่านใช้ AS ... ท่านต้องเอา alias มาใช้กำหนดข้างหน้าในแต่ละ column ของ tb นั้นด้วยนะครับ เช่น blash_tb.blah_column_name หวังว่าคงไม่งงนะครับ **โปรแกรมมิ่งไม่ใช่แค่ copy&paste ผมเอามาใส่แล้วแต่ไม่ได้เหมือนเดิมครับ ผมเคยแจ้งแล้วนะครับ ว่าโจทย์ท่าน ท่านต้องลองทดสอบดู และหาข้อผิดพลาดมันควรจะอยู่ตรงไหน ในกรณีที่ผลของ query ไม่ได้เป็นไปตามที่ท่านตั้งใจเอาไว้หรืออยากให้เป็น(คิดเอง ทำเอง แก้เอง) ซึ่งคำตอบก็มีท่านอื่นๆ ได้ใบ้ไปหมดแล้ว(สำหรับ mysql basic) อันนี้ต้องงมต่อครับ ไม่ใช่ copy & paste แล้วรัน แล้วผลลัพธ์ยังไม่ได้อีก แล้วมาโพสตามต่อ นั่นแสดงว่า ท่านไม่ได้หาข้อมูล หรือมีพื้นฐานเกี่ยวกับ mysql หรือเทคนิคการดัดแปลงเลย ใช่ครับวันนี้ท่านมีปัญหา มาโพสแล้วมีเทพ(และเทพมั่วซั่วมาตอบแบบไม่รู้หลักการจริงๆ) ท่านอาจจะโชคดีไปถ้าเกิดมัน(ฟลุ๊ค)ใช้งานได้ขึ้นมา แต่วันอื่นๆในชีวิตการเขียนโปรแกรมของท่านล่ะครับ ท่านจะทำยังไง มาโพสถามอีกหรือ? == เข้าประเด็น === โจทย์แบบนี้มันแค่การดึงรายการมาทำ report/summary เท่านั้น ไม่ได้ยากเกินความสามารถท่านหรอกครับ แค่ join 2-3 ตาราง ผมออกมาทำงานจริงๆเคย join 6-7 ตารางแหน่ะครับวิ่งฉิวๆ mysql มันไม่ได้ฉลาดมาก แต่ก็ไม่โง่จนเกินไป ถ้าอันนี้ไม่ได้ ลองแบบอื่นดูครับ สังเกตุผลลัพธ์ไปเรื่อยๆ แล้วท่านจะจับทางมันได้ โจทย์ไหนๆ ดูแปปเดียวก็ทำได้แล้ว ฝึกทำบ่อยๆ เดวก็ชิน พยายามหาโจทย์มาลองทำเยอะๆ (ตอนเรียนวิทย์คอมพ์ผมไม่ได้ออกไปไหนเลย) ปล อันนี้ผมไม่ได้ตำหนิท่านนะครับ ดีใจที่ท่านสนใจในงานโปรแกรมมิ่งด้วยซ้ำ (ข้อความด้านบนจะเป็นส่วนหนึ่งของคำพูดอ.ที่เคยสอนผมสมัยเรียน ซึ่งตอนนั้นผมรู้สึกแย่มาก แต่ตอนนี้คิดได้แล้ว) ส่วนด้านล่างนี้ผมลองทำเป็นตัวอย่างให้ดูครับว่า เวลาเราจะดึงข้อมูลที่มีการ join เพื่อทำ report/summary นั้น สามารถทำอย่างไรได้บ้าง == tables schema for testing == โค๊ด: CREATE TABLE IF NOT EXISTS `oc_order` ( ส่วนด้านล่างจะเป็นตัวอย่างคำสั่ง query ครับ (nested query) โค๊ด: select order_id,sum(quantity) as qty,sum(sub_total) as total from ถ้าท่านยังมองภาพไม่ออกไปลิงค์ [url]http://sqlfiddle.com/#[/url]!9/f19db1/11 ครับ ผมทำเป็นตัวอย่างให้ดูแบบง่ายๆแล้ว ขอบคุณครับผม จะเอาไปศึกษาข้อมูลต่อเพราะผมหาจากเว็บฝรั่งมาเจอการ JOIN แบบนี้แล้วเอามาปรับแล้วยัง ERROR ก็เลยเอามาถามครับ หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: rapiz ที่ 22 พฤษภาคม 2017, 23:54:30 โค๊ด: SELECT ปล1. หากมี data มากๆ ควรทำ index ไว้ที่ orders_dates ด้วยนะครับ (ซึ่งคาดว่า B.order_id กับ A.id จะเป็น primary key อยู่แล้ว) ปล2. ควรจะดู format datetime ที่ส่งไป query ด้วยนะครับ หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: itmaiz ที่ 23 พฤษภาคม 2017, 10:28:21 โค้ดตามนี้ครับ รบกวนช่วยหน่อยครับผมแก้ไม่ตกครับว่าทำไมเวลา Search ข้อมูลตามวันที่ไม่แสดงครับ :-X โค๊ด: $query = " เอา Database ของ orders กับ order_details มาดูโหน่ยสิครับ ถ้าดูโค้ดลอยๆ ถ้าอักษรผิดตัวเดียวมันก้อเปิดไม่ได้อยู่แล้ว :wanwan012: (https://www.img.in.th/images/5545101a005ab29f59430085f66fffd9.jpg) หัวข้อ: Re: สอบถามการ JOIN 2 ตารางข้อมูลไม่แสดงครับ เริ่มหัวข้อโดย: Kanomroo ที่ 23 พฤษภาคม 2017, 14:03:06 มาเก็บความรู้ค่ะ ปกติอยู่แต่ Thaicreate กับ stackoverflow ในไทยเสียวคนเก่งๆเยอะเหมือนกัน
ไม่รู้จะแนะนำอะไร แต่เรื่องวันที่สิ่งสำคัญที่สุด คือ Format ค่ะ |