 |
ถามแนวคิด SQL สำหรับการ SELECT ข้อมูลจาก table ที่มีความแตกต่างกัน แต่ให้มาแสดงผล รวมกันครับ |
|
 |
|
|
 |
 |
|
UNION / UNION ALL กันได้สบาย ๆ เลยครับ
|
 |
 |
 |
 |
Date :
2011-11-30 21:15:11 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณครับ ลองไป query ดูแล้วได้ผลครับ
ใช้คำสั่ง SQL ดังนี้ จากตัวอย่าง table ที่ยกตัวอย่างไว้
SELECT new_id,new_title,new_detail,new_date FROM tb_new
UNION
SELECT event_id,event_title,event_detail,event_date FROM tb_event
UNION
SELECT topic_id,topic_title,topic_detail,topic_date FROM tb_topic ORDER BY new_date DESC
แต่ขอถามเพิ่มเติมครับ
เนื่องจากข้อมูลรวมกันจากหลายตารางแล้วจะทำ hyper link เพื่อไปให้ลิงค์ไปดู detail ของข่าวสารนั้นๆหรือดูรายละเอียดกระทู้ได้อย่างไรครับในเมื่อข้อมูลจากตารางนั้นแตกต่างกัน
สมมุติตัวอย่าง ข้อมูลที่ ทำการ query ที่ได้มาจากคำสั่ง SQL ข้างต้นครับ
new_id................new_title............new_detail............new_date
1.........................event 1..............e 1........................2011-11-30 21:58:20
2.........................board 2..............b 2.......................2011-11-30 21:55:15
1.........................new 1.................n 1.......................2011-11-30 21:54:04
1.........................board 1..............b 1.......................2011-11-30 21:50:15
ซึ่งจะใช้ field id เป็นตัวไป เปิด web page นั้นๆเช่น
ถ้าในกรณีที่เป็นข้อมูลที่มาจากตาราง tb_new ให้ link ไปที่ new.php?id=xxxx
แต่ถ้าเป็นข้อมูลจากตาราง tb_event ให้ link ไปที่ event.php?id=xxxx
และถ้าเป็นข้อมูลจากตาราง tb_board ให้ link ไปที่ board.php?id=xxxx
โดยที่ xxxx นั้นแทนด้วย หมายเลข id ที่เป็น ไพมารี่คีย์ ของ table นั้นๆอะครับ
สามารถทำได้อย่างไร จะเช็คเงื่อนไขในการกำหนด link ไปยัง page ที่ต้องการได้อย่างไรครับ
|
ประวัติการแก้ไข 2011-11-30 22:12:23 2011-11-30 22:14:03
 |
 |
 |
 |
Date :
2011-11-30 22:09:44 |
By :
Likito |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code
SELECT 'tb1' as tb,new_id,new_title,new_detail,new_date FROM tb_new
UNION
SELECT 'tb2' as tb,event_id,event_title,event_detail,event_date FROM tb_event
UNION
SELECT 'tb3' as tb,topic_id,topic_title,topic_detail,topic_date FROM tb_topic
ORDER BY new_date DESC
คุณจะได้ฟิวด์ชื่อว่า tb ใหม่ซึ่งจะมีระบุว่ามาจาก table อะไร แล้วใน Link ก็ใช้ if เอาครับ ว่าจะให้ Record นั้น ๆ Link ไปที่ไหน หวังว่าคงจะเข้าใจครับ
|
 |
 |
 |
 |
Date :
2011-11-30 22:37:35 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณครับ 
|
 |
 |
 |
 |
Date :
2011-11-30 22:53:32 |
By :
Likito |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|