สุ่มข้อมูลมาแสดงมีวิธีการอย่างไรครับ HomeForumสุ่มข้อมูลมาแสดงมีวิธีการอย่างไรครับ Wanchana yoojuy ตัวอย่างข้อมูลใน Database ID Name Lastname 1 AAA 5555 2 BBB 4444 3 CCC 3333 4 DDD 2222 ต้องการให้ Query ออกมาแล้วโชว์ข้อมูลเป็นอย่างนี้ครับ 1 BBB 4444 2 CCC 5555 3 AAA 2222 4 DDD 3333 คือให้ทุกฟิวล์สลับที่อยู่กันด้วยแบบไม่เรียงแถวให้สลับแถวกันอยู่ครับ ไม่ทราบว่ามีวิธีการที่จะทำได้หรือปล่าวครับ BlueEye วิโรจน์ คชินทร์ สวัสดีครับ... สงสัยว่า...ทำไมต้องคิวรี่ออกมาในลักษณะนี้ครับ (ขอทราบเหตุผล) ในระดับการคิวรี่โดยการ SELECT คงทำไม่ได้ครับ แต่ถ้าเอามาจัดการด้วยคำสั่งของภาษาก็มีทางเป็นไปได้ กรกฎ วิริยะ โดยปกติเราก็ใช้คำสั่ง ORDER BY RAND() เพื่อให้เรียงลำดับแบบสุ่มได้ครับ SELECT * FROM tablename ORDER BY RAND() ผมไม่ทราบว่า ID ที่เรียงตามลำดับมีความเกี่ยวข้องหรือไม่ แต่ในทางปฏบัติ เราสามารถใช้ PHP เพื่อจัดการหมายเลขลำดับตอนแสดงผลได้ครับ โดยไม่เกี่ยวข้องกันกับ ID จริงๆของข้อมูลตอน Query ปล. ผมว่าน่าจะเป็น NO. มากกว่า ID นะครับ Wanchana yoojuy ขอบคุณทั้งสองท่้านมากครับ ตอบข้อแรกนะครับ เอาไปใช้ในการเลือกองค์ประกอบของ Part ว่ามีส่วนประกอบอะไรบ้าง โดยให้สุ่มไปอยู่ในหลายๆบรรทัด เพื่อป้องกันพนักงานไม่ได้เช็คข้อมูลกับ Part ที่จะส่งให้กับลูกค้าครับ ส่วนของท่านอาจารย์ผมลองทำแล้ว จะสุ่มได้ครับ แต่ข้อมูลก็จะเรียงลงมาตามบรรทัด ไม่สุ่มแบบที่ยกตัวอย่างครับ ทำให้ถ้่าพนักงานรู้ตัวแรกก็จะรู้เลยว่าข้อมูลถัดไปก็จะอยู่บรรทัดเดียวกัน เลยไม่ทราบว่ามีวิธีการออกแบบยังไงที่จะสามารถกำหนดได้ตามความต้องการอย่างนี้ครับ BlueEye วิโรจน์ คชินทร์ ORDER BY RAND() มันสุ่มตาม record ครับ แต่โจทย์บอกให้สุ่มฟิลดิ์ไปที่ record อื่นด้วย (Lastname ย้ายไปอยู่ที่ Name อื่น) ไม่แน่ใจว่าผมเข้าใจถูกหรือเปล่านะ...ว่า ในแต่ละ part จะมีองค์ประกอบอยู่หลายอย่างใช่มั้ยครับ โดยที่ ถ้าพนักงานเลือก part อะไรก็ตามจะมีองค์ประกอบต่างๆขึ้นมาให้ดูด้วย ความต้องการก็คือ เมื่อพนักงานเลือก part ขึ้นมา ก็ให้ระบบแสดงองค์ประกอบขึ้นมาเรียงแบบสุ่มให้พนักงานตรวจสอบใช่มั้ยครับ ขอปรับความเข้าใจก่อนนะ เพราะไม่แน่ใจว่าที่ผมเข้าใจถูกต้องแค่ไหน Wanchana yoojuy ท่าน BlueEye เข้าใจถูกแล้่วครับท่าน เลยไม่รู้ว่าจะออกแบบยังไงเลย ไม่ทราบว่าท่านพอจะมีทางแนะนำไหมครับ กรกฎ วิริยะ 555+++ ดูทีแรกเห็น BBB = 4444 เหมือนเดิม คิดว่าพอเป็นไปได้ แต่ก็น่าจะยุ่งยาก หากใช้คำสั่ง SQL นะครับ โดยการสร้าง View แล้ว สุ่มแต่ละ field ไปใส่ ตารางใหม่ ทีละอัน แนวคิดที่น่าจะลองดูคือ การ query 2 ครั้งครับ ครั้งแรก query เอา คอลัมน์แรกออกมาแบบสุ่มก่อน ครั้งที่ สอง ก็ query เอา คอลัมน์ที่ 2 ออกมาแบบสุ่มเช่นกัน ก็จะได้ข้อมูลที่เปลี่ยนไปเรื่อยๆแล้วครับ การ query อาจใช้การ query ใส่ array ไว้ก่อน แล้วค่อยจัดการแสดงผลตอนหลังก้ได้ครับ ลองดูนะครับ BlueEye วิโรจน์ คชินทร์ ถ้าตารางที่เก็บข้อมูลเป็นไปตามรูปที่ให้มาก็ทำแบบที่คุณ Goragod ได้เหมือนกันครับ แต่ส่วนตัวคิดว่า ระบบที่ทำออกมาให้ง่ายและเป็นมิตรกับผู้ใช้งานน่าจะทำให้ผู้ใช้มีกำลังใจในการใช้งานมากกว่า นั่นหมายความว่าข้อมูลจะผิดพลาดน้อยลง ถ้าผู้ใช้มีความใส่ใจในการใช้งาน ถ้าต้องให้พนักงานเลือก part ขึ้นมาเพื่อตรวจสอบองค์ประกอบอะไรบ้าง ผมจะออกแบบตารางขึ้นมา 2 ตาราง 1. ตารางเก็บชื่อสินค้า และรายละเอียดเฉพาะสินค้านั้นๆ 2. ตารางเก็บชิ้นส่วนหรือองค์ประกอบ ที่จะเป็นองค์ประกอบของสินค้าแต่ละตัว ทั้งสองตารางเชื่อมต่อกันด้วย primary id ของสินค้า โดยที่ relationship เป็นแบบ One to Many เพราะสินค้าหนึ่งตัวจะมี องค์ประกอบได้หลายส่วน ยกตัวอย่างเช่น ---------------------------- ----------------------- | product_id (pk) |---------- | part_id (pk) | | product_name | |--------> | product_id | | | | part_name | ----------------------------- ----------------------- หน้าจอของระบบอาจจะแสดงรายชื่อสินค้าออกมาให้เลือก แล้วเมื่อเลือกสินค้าใดแล้วก็จะแสดงรายละเอียด part ขึ้นมาให้ดูโดยสุ่มรายการ part ทั้งหมดออกมาแสดงแบบเรียงบันทัดแบบสุ่ม ตามคิวรี่ที่ คุณ Goragod แนะนำ แค่นี้ก่อนละกัน เพราะกลัวผมจะแนะนำได้ไม่ตรงกับใจเท่าไร ความคิดเห็น รายละเอียด ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M ส่งความคิดเห็น
สวัสดีครับ...
สงสัยว่า...ทำไมต้องคิวรี่ออกมาในลักษณะนี้ครับ (ขอทราบเหตุผล)
ในระดับการคิวรี่โดยการ SELECT คงทำไม่ได้ครับ แต่ถ้าเอามาจัดการด้วยคำสั่งของภาษาก็มีทางเป็นไปได้
ผมไม่ทราบว่า ID ที่เรียงตามลำดับมีความเกี่ยวข้องหรือไม่ แต่ในทางปฏบัติ เราสามารถใช้ PHP เพื่อจัดการหมายเลขลำดับตอนแสดงผลได้ครับ โดยไม่เกี่ยวข้องกันกับ ID จริงๆของข้อมูลตอน Query
ปล. ผมว่าน่าจะเป็น NO. มากกว่า ID นะครับ
ตอบข้อแรกนะครับ
เอาไปใช้ในการเลือกองค์ประกอบของ Part ว่ามีส่วนประกอบอะไรบ้าง โดยให้สุ่มไปอยู่ในหลายๆบรรทัด เพื่อป้องกันพนักงานไม่ได้เช็คข้อมูลกับ Part ที่จะส่งให้กับลูกค้าครับ
ส่วนของท่านอาจารย์ผมลองทำแล้ว จะสุ่มได้ครับ แต่ข้อมูลก็จะเรียงลงมาตามบรรทัด ไม่สุ่มแบบที่ยกตัวอย่างครับ ทำให้ถ้่าพนักงานรู้ตัวแรกก็จะรู้เลยว่าข้อมูลถัดไปก็จะอยู่บรรทัดเดียวกัน
เลยไม่ทราบว่ามีวิธีการออกแบบยังไงที่จะสามารถกำหนดได้ตามความต้องการอย่างนี้ครับ
ORDER BY RAND()
มันสุ่มตาม record ครับ แต่โจทย์บอกให้สุ่มฟิลดิ์ไปที่ record อื่นด้วย (Lastname ย้ายไปอยู่ที่ Name อื่น)
ไม่แน่ใจว่าผมเข้าใจถูกหรือเปล่านะ...ว่า
ในแต่ละ part จะมีองค์ประกอบอยู่หลายอย่างใช่มั้ยครับ โดยที่ ถ้าพนักงานเลือก part อะไรก็ตามจะมีองค์ประกอบต่างๆขึ้นมาให้ดูด้วย
ความต้องการก็คือ เมื่อพนักงานเลือก part ขึ้นมา ก็ให้ระบบแสดงองค์ประกอบขึ้นมาเรียงแบบสุ่มให้พนักงานตรวจสอบใช่มั้ยครับ
ขอปรับความเข้าใจก่อนนะ เพราะไม่แน่ใจว่าที่ผมเข้าใจถูกต้องแค่ไหน
คิดว่าพอเป็นไปได้ แต่ก็น่าจะยุ่งยาก หากใช้คำสั่ง SQL นะครับ โดยการสร้าง View แล้ว สุ่มแต่ละ field ไปใส่ ตารางใหม่ ทีละอัน
แนวคิดที่น่าจะลองดูคือ การ query 2 ครั้งครับ
ครั้งแรก query เอา คอลัมน์แรกออกมาแบบสุ่มก่อน
ครั้งที่ สอง ก็ query เอา คอลัมน์ที่ 2 ออกมาแบบสุ่มเช่นกัน
ก็จะได้ข้อมูลที่เปลี่ยนไปเรื่อยๆแล้วครับ
การ query อาจใช้การ query ใส่ array ไว้ก่อน แล้วค่อยจัดการแสดงผลตอนหลังก้ได้ครับ
ลองดูนะครับ
ถ้าตารางที่เก็บข้อมูลเป็นไปตามรูปที่ให้มาก็ทำแบบที่คุณ Goragod ได้เหมือนกันครับ
แต่ส่วนตัวคิดว่า ระบบที่ทำออกมาให้ง่ายและเป็นมิตรกับผู้ใช้งานน่าจะทำให้ผู้ใช้มีกำลังใจในการใช้งานมากกว่า
นั่นหมายความว่าข้อมูลจะผิดพลาดน้อยลง ถ้าผู้ใช้มีความใส่ใจในการใช้งาน
ถ้าต้องให้พนักงานเลือก part ขึ้นมาเพื่อตรวจสอบองค์ประกอบอะไรบ้าง ผมจะออกแบบตารางขึ้นมา 2 ตาราง
1. ตารางเก็บชื่อสินค้า และรายละเอียดเฉพาะสินค้านั้นๆ
2. ตารางเก็บชิ้นส่วนหรือองค์ประกอบ ที่จะเป็นองค์ประกอบของสินค้าแต่ละตัว
ทั้งสองตารางเชื่อมต่อกันด้วย primary id ของสินค้า โดยที่ relationship เป็นแบบ One to Many เพราะสินค้าหนึ่งตัวจะมี
องค์ประกอบได้หลายส่วน ยกตัวอย่างเช่น
---------------------------- -----------------------
| product_id (pk) |---------- | part_id (pk) |
| product_name | |--------> | product_id |
| | | part_name |
----------------------------- -----------------------
หน้าจอของระบบอาจจะแสดงรายชื่อสินค้าออกมาให้เลือก แล้วเมื่อเลือกสินค้าใดแล้วก็จะแสดงรายละเอียด part
ขึ้นมาให้ดูโดยสุ่มรายการ part ทั้งหมดออกมาแสดงแบบเรียงบันทัดแบบสุ่ม ตามคิวรี่ที่ คุณ Goragod แนะนำ
แค่นี้ก่อนละกัน เพราะกลัวผมจะแนะนำได้ไม่ตรงกับใจเท่าไร