ใกล้เลือกตั้งแล้ว เลยจะเขียนอะไรเกี่ยวกับสิทธิดูซักหน่อย สมมุติว่าทำอัลบั้มรูปงานรับปริญญาออนไลน์แต่อยากจะให้สมาชิกดูได้ไม่กี่คน ตามปกติจะมี 3 ตารางคือ ตารางเก็บรูป ตารางสมาชิก และตารางเก็บว่าใครดูได้บ้างอีกตาราง แต่มีเทคนิคที่ทำให้ใช้ 2 ตารางโดยรวมสิทธิไปไว้กับตารางเก็บรูปเลย ก่อนอื่นสร้างตารางก่อน
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | -- -- Table structure for table `images` -- CREATE TABLE IF NOT EXISTS `images` ( `imageId` int (11) NOT NULL AUTO_INCREMENT, `src` varchar (20) NOT NULL , `assign` varchar (100) NOT NULL , PRIMARY KEY (`imageId`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; -- -- Dumping data for table `images` -- INSERT INTO `images` (`imageId`, `src`, `assign`) VALUES (1, 'Graduate.jpg' , '2,3,15,19' ); |
สร้างตารางสมาชิกเองนะครับ ^_^ ค่าใน assign คือ id ของ user แต่ละคนคั่นด้วย , เวลาแสดงก็หาได้โดยใช้ไอดีของ user มาใส่ใน function FIND_IN_SET ช่วยเลือกข้อมูลตามตัวอย่าง
1 2 3 | SELECT `imageId` , `src` FROM `images` WHERE FIND_IN_SET( '3' , `assign` ) > 0; |
ถ้า id 3 มีอยู่ใน assign ก็จะเห็นข้อมูลครับ
About the author