งั้นผมสนใจข้อ 1 ครับ
table [A]
id | id_card |
1 | 111222333444555 |
2 | 222333444555666 |
table [A_detail]
id | Master_id | Firstname | lastname | tel | updatedate | updateby |
1 | 1 | Nadet | Kugimiya | 1234567890 | 02/04/2555 07:35 | admin1 |
2 | 1 | Nadet | lol | - | 02/04/2555 10:40 | admin2 |
3 | 1 | Nadet | TSB | 9876543210 | 02/04/2555 11:30 | admin1 |
4 | 2 | YaYa | Kugimiya | 5556667778 | 02/04/2555 07:35 | admin3 |
5 | 2 | YaYa | lol | 1912131517 | 02/04/2555 09:51 | admin1 |
6 | 2 | Ya11 | TSB | 9876543210 | 02/04/2555 11:30 | admin2 |
จะเห็นว่า Table ทั้งสองมี relation กันอยู่ เวลาต้องการข้อมูล ก็เอามาทำการ join ครับ
SELECT * FROM a a
inner join a_detail d on a.id = d.master_id
where a.idcard = '111222333444555'
order by d.updatedate
LIMIT 0 , 1
จาก code ตัวอย่าง เราก็จะดึง record ล่าสุึดของ ณเดช มาได้ หลังจากเราทำการแก้ไขแล้ว
แทนที่จะ update เข้าไปตรงๆ ก็ใช้คำสั่ง insert แทน
INSERT INTO `a_detail`
(`id`, `Master_id`, `Firstname`, `lastname`, `tel`, `updatedate`, `updateby`) VALUES
('3', '1', 'Sorayoot', 'Sutatsanajinda', '1155115511', SYSDATE(), 'admin3')
พอเราใช้คำสั่ง insert ไปแล้ว เวลาเอา queryแรกไปรันดูก็จะเจอข้อมูลล่าสุดตลอดโดยที่ข้อมูลเก่าๆ ยังอยู่ไม่หายไปไหน
และยังมี log ด้วยว่าใครอับเดท วันไหนเวลาไหน จะได้ตามไปเฉ่งถูกคน
เคยมี นศถามผมนะว่า ข้อมูลที่ insert ไปเรื่อยๆ พวกนี้ไม่ทำให้ ฐานข้อมูลใหญ่ขึ้นเหรอ
ตอบ ใหญ่ขึ้นแน่นอนครับ แต่ใหญ่แล้วไงหละ?
เวลาเรา query มาใช้ก็มีเงื่อนไขด้วย ใช่ว่าจะ query มาทั้งหมด
ส่วนอันที่มันโตใน database ก็ปล่อยให้่มันโตไปเหอะ ไม่มีปัญหาเลย