Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

दो तालिकाओं में शामिल हों जहां तालिका ए में दिनांक मान है और ए में दिनांक के नीचे बी में अगली तिथि खोजने की आवश्यकता है

-- Create and fill first table
CREATE TABLE `id_date` (
  `id` int(11) NOT NULL auto_increment,
  `iddate` date NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `id_date` VALUES(1, '2010-01-13');
INSERT INTO `id_date` VALUES(2, '2011-04-19');
INSERT INTO `id_date` VALUES(3, '2011-05-07');

-- Create and fill second table    
CREATE TABLE `date_val` (
  `mydate` date NOT NULL,
  `myval` varchar(4) collate utf8_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `date_val` VALUES('2009-03-29', '0.5');
INSERT INTO `date_val` VALUES('2010-01-30', '0.55');
INSERT INTO `date_val` VALUES('2011-08-12', '0.67');

-- Get the result table as asked in question
SELECT iddate, t2.mydate, t2.myval
FROM `id_date` t1
JOIN date_val t2 ON t2.mydate <= t1.iddate
AND t2.mydate = ( 
SELECT MAX( t3.mydate ) 
FROM `date_val` t3
WHERE t3.mydate <= t1.iddate )

हम क्या कर रहे हैं:

  • प्रत्येक दिनांक के लिए id_date . में तालिका (आपकी तालिका A ),
  • हमें तारीख date_val में मिलती है तालिका (आपकी तालिका B )
  • जो date_val में उच्चतम तिथि है तालिका (लेकिन अभी भी id_date.date से छोटी है)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MONTH () उदाहरण – MySQL

  2. MySQL ऑटो-इन्क्रीमेंट प्रति विशिष्ट मान अन्य कॉलम में दर्ज किया गया है?

  3. मैं MySQL तालिकाओं में पढ़ने/लिखने को कैसे लॉक कर सकता हूं ताकि मैं डेटाबेस में पढ़ने/लिखने वाले अन्य प्रोग्रामों के बिना चयन कर सकूं और फिर सम्मिलित कर सकूं?

  4. कई पंक्तियों में कुछ मान होने की संख्या की गणना करने के लिए SQL क्वेरी

  5. UTF-8 का उपयोग कब करें और MySQL में latin1 का उपयोग कब करें?