sql >> データベース >  >> RDS >> Mysql

テーブルAに日付値があり、Aの日付の下にあるBの次の日付を見つける必要がある2つのテーブルを結合します

    -- 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. php&mysql-単一行の列をループし、値を配列に渡します

    2. 64ビットアプリケーションをClarionTopSpeedに接続する

    3. データベース''へのユーザー''@'localhost'のmysqlアクセスが拒否されました

    4. Oracle SQL Developerを使用してデータをエクスポートする方法は?