Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mysql pilih dengan while loop

Anda dapat membuat fungsi mysql untuk mendapatkan level record kemudian memanggilnya di query Anda. input fungsi akan menjadi id record dan output nomor level. Fungsinya akan seperti ini

DELIMITER $$
DROP FUNCTION IF EXISTS `getlevel` $$
CREATE FUNCTION `get_level`(Id int(11)) RETURNS int(11) 
    DETERMINISTIC
BEGIN 
DECLARE levelNumber int(11); -- declare variable to record level
DECLARE parent int(11); -- declare variable to hold the parent id
set levelNumber = 0; -- set the level to zero at the begining
set parent = (select `relation_column` from `table` where `id_column` = Id); -- get parent record of then id givin to function
while parent > 0 DO  -- loop unitl parent = 0 or record has no parent
set levelNumber = levelNumber + 1; -- increase level by 1
set parent = (select `relation_column` from `table` where `id_column` = parent); -- re set parent id
END 
WHILE; 
return levelNumber; -- return then level number
END$$
DELIMITER ;

kolom_relasi adalah kolom yang menampung relasi record.kolom_id adalah kolom yang menampung id record atau (kunci utama).

query terakhir akan seperti ini

select `table`.`id_column`,`table`.`relation_column`,`table`.`name`,get_level(`table`.`id_column`) as  "level" from `table` 

semoga membantu




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara membuat dan menjalankan fungsi dan prosedur tersimpan MySQL

  2. Akses Komentar bidang MySQL dengan PHP

  3. Cara Mengelompokkan berdasarkan user_id dan memesan berdasarkan desc

  4. Menu bertingkat dari catatan basis data

  5. Menghapus baris duplikat dari tabel