Loop in Select Query without Procedure

Loop in Select Query : कभी कभी हमें SQL में एक ही रिकॉर्ड के Data को Repeat करना होता हैं और उसमे बाकि Information तो same ही रहती हैं परन्तु हमें कोई एक या दो Columns की Value को प्रत्येक Row पर बदलना होता हैं इसी ट्रिक या Logic को Loop in Select Query कहते है ।

यदि आपके पास भी इस तरह की कोई Problem हैं तो आप इस आसान Trick से Solution कर सकते हैं ।

देखिये SELECT SQL में किसी भी तरह के Loop नहीं चलते हैं वहा पर हमें जो भी Logic लगाने होते हैं वह केवल Table के आधार पर ही लगाने होते हैं ।


हमारे अन्य आर्टिकल


Example : Repeat Row Using Loop Logic

यदि आप इस Logic को वीडियो के माध्यम से समझना चाहते हैं तो इस वीडियो से समझ सकते हैं

हम यह मानते हैं की हमारे पास एक टेबल जिसमे Employee का ID ,Name , No of Installment , Inst amount Column हैं, अब आपको एक SQL लिख कर जितनी Installment हो उतनी Row Generate करना हैं ।

CREATE TABLE IF NOT EXISTS `mst_emp` (
  `emp_id` int(9) NOT NULL AUTO_INCREMENT,
  `emp_nm` varchar(40) NOT NULL,
  `inst_amt` decimal(9,0) NOT NULL DEFAULT 0,
  `no_of_inst` int(9) NOT NULL DEFAULT 0,
  PRIMARY KEY (`emp_id`)
);

इस SQL से हमें Testing के लिए Data Insert किया हैं ।

INSERT INTO `mst_emp` (`emp_id`, `emp_nm`, `inst_amt`, `no_of_inst`) VALUES
(1, 'Sandip', '1000', 5),
(2, 'Manish ', '2000', 3);

यह Loop Logic के लिए हम एक Table बना रहे हैं, यदि आप चाहे तो इसे एक Dummy Table से भी कर सकते हैं

CREATE TABLE IF NOT EXISTS `mst_srno` (
  `i` int(9) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`i`)
) ;

देखिये इस वाले Example में Maximum Installment 10 हो सकती हैं ऐसा मान कर मेने इसमें 10 Records Insert किये हैं, आपको जो भी Logic लगाना हैं उसमे जितने Max Record चाहिए उतनी Row इस table में होना चाहिए ।

INSERT INTO `mst_srno` (`i`) VALUES
(1), (2), (3), (4), (5),
(6), (7), (8), (9), (10);

यहाँ पर हमें Mst_Emp टेबल को Mst_srno से Join की हैं , और यहाँ पर हमें कोई भी Primary और Foreign Key का उपयोग नहीं किया, जो यहाँ पर Jo joining हो रही हैं उसका आधार No_of_inst वाला column हैं ।

SELECT a.emp_id, a.emp_nm, b.i as inst_no, a.inst_amt 
FROM mst_emp a, mst_srno b 
WHERE b.i <= a.no_of_inst ;

Query Execute करने के बाद हमें इस तरह से Output मिलेगा

SQL Loop Logic Without Cursor & While

यही Same output आप एक Dummy Table से भी बना सकते थे उसकी SQL इस प्रकार हैं ।

SELECT a.emp_id, a.emp_nm, b.i as inst_no, a.inst_amt 
FROM mst_emp a, 
(
    select 1 as i union all
    select 2 as i union ALL
    select 3 as i union ALL
    select 4 as i union ALL
    select 5 as i union ALL
    select 6 as i union ALL
    select 7 as i union ALL
    select 8 as i union ALL
    select 9 as i union ALL
    select 10 as i 
)
b 
WHERE b.i <= a.no_of_inst;

आशा हैं आपको समझ में आ गया होगा की किस तरह से हम SQL में ही Loop Logic लगा सकते हैं यहाँ पर b.i<=a.no_of_inst लगाना बहुत जरुरी हैं नहीं तो इसका प्रॉपर रिप्लाई नहीं आएगा


इस आर्टिकल से इन Question के भी Answer Cover किये गए हैं

  • How can I loop through all rows of a table?
  • How do I loop a MySQL query?
  • Can we use loop in SQL query?
  • Loop in mysql query
  • Loop in mysql select query
  • Loop in mysql select query without procedure
  • Mysql loop through rows
  • Mysql loop example


किसी भी प्रकार की कोई Query हो या कुछ भी आपको इससे सम्बंधित समझना हो तो आप Comment कर सकते हैं ।

Add a Comment

Your email address will not be published. Required fields are marked *