การจัดลำดับใหม่ข้องข้อมูล เมื่อลบข้อมูลในตารางออกไป
ทำแบบนั้นตารางที่มีความสัมพันธ์กันอยู่ ก็ผิดเพี้ยนไปหมดสิครับ
Date :
2015-04-30 21:46:45
By :
แค่ล้อเล่น
ทำไมถึงอยากให้เป็นแบบนั้นครับ?? ขอเหตุผล/ความจำเป็นสักข้อครับ
ใน phpmyadmin ถ้ามีข้อมูล 1 2 3 4 หากลบ 2 ออกไป ข้อมูลจะเป็น 1 3 4 ทำให้เป็น 1 2 3 ไม่น่าจะได้(จากประสบการณ์)
Date :
2015-05-01 01:23:56
By :
apisitp
ทำน่ะทำได้อยู่ครับ แต่ไม่อยากให้ทำ เพราะมันจะเปลือง resource โดยใช่เหตุ
เพราะถ้ามีข้อมูลเป็น แสนเป็นล้าน คุณจะมานั่งจัดเรียงใหม่เหรอครับ
และก็ต้องทำ cascade ตารางที่เกี่ยวข้องให้ update ตาม
ถ้ามันสัมพันธ์กัน สัก 4-5 ตาราง อาจต้องนั่งรอเป็นวันสองวัน เพื่อจัดเรียงใหม่
คุณพร้อมหรือไม่ที่จะทำแบบนั้น
คำถามเดียวกันกับความเห็น 2 น่ะครับ ทำไปเพื่ออะไร
สำหรับ โค๊ดถ้าอยากทำจริงๆ เป็นความรู้ก็พอนะครับ
ต้องทำเป็น multi query เพื่อให้มันอยู่ใน คิวเดียวกัน เครื่องอื่น จะได้ไม่แทรกคิวเข้ามาได้
Code (PHP)
<?php
$sql = <<<SQL
delete from test where id=2;
update test set id=id-1 where id>2;
ALTER TABLE `test` auto_increment = 1;
SQL;
$db=new mysqli('localhost', 'test', 'test', 'test');
$db->multi_query($sql) or die( $db->error);
echo $db->affected_rows;
?>
ปล. ข้อเสีย ถ้าก่อนทำมีคน คิวรี่ id ไว้ก่อน กำลังจะ update มันอาจจะ ไม่ตรง กับความเป็นจริงได้
ก็ต้อง เขียนโปรแกรมให้รัดกุม
สรุป เหนื่อยนะครับ ถ้าจะทำเคสนี้
Date :
2015-05-01 07:28:13
By :
Chaidhanan
ทำได้จริงๆ
Date :
2015-05-01 08:20:59
By :
apisitp
id เก็บไว้ใช้งานอ้างอิงครับ เช่ร อ้างอิงเวลาแก้ไข id หลักๆจากตารางข้อมูลไม่ต้องไปยุ่งจะดีครับ
แต่แค่จะหมายถึงว่า มี id 1 2 3 4 ตอนคิวรี่มาเป็นตารางแสดงข้อมูลบนหน้าเว็บ
มันก็แสดงออกมาเป็น 1 2 3 4 แต่พอลบเช่น 1 ออกไป เลขลำดับในตาราง มันก็จะเป็น 2 3 4
อันนี้พูดถึงการสร้างตาราง วนลูป มีลำดับเลขนะครับ
ถ้าจะต้องการลำดับ ก็กำหนด เช่น $n = 1 ไว้นอกลูป
เวลาใช้งานก็ echo $n;
ก่อนปิดลูปใส่ ++$n; ไว้
พอวนลูปกลับมา ตัว n เป็นการกำหนดลำดับ มันก็จะวนลูป เรียงลำดับให้
ไม่ต้องไปยุ่งเกี่ยวกับ id ในตารางข้อมูล
แบบนี้หรือเปล่าที่จะถามอะครับ
ที่ไม่อธิบายแบบนี้ ผมคิดไปว่าจะไปทำกับลำดับ id ใน ตารางเก็บข้อมูลใน phpmyadmin ครับ
ปล.ไม่ขอตอบผ่าน PM นะ
Date :
2015-05-01 13:18:35
By :
apisitp
Load balance : Server 00