ここに私が結合した2つのテーブルがあります...
song_id   song_name
  51  |  Song Name A
  368 |  Song Name B
  168 |  Song Name C
  568 |  Song Name D
  13  |  Song Name E
song_id | song_order|        show_date      |show_id
368     |     1     |  2010-02-17 00:00:00  |  367      
368     |     0     |  2012-04-06 00:00:00  |  499 
51      |     2     |  2012-01-19 00:00:00  |  399
51      |     2     |  2013-04-24 00:00:00  |  870 
51      |     8     |  2013-07-19 00:00:00  |  899 
368     |     2     |  2013-07-19 00:00:00  |  899 
13      |     5     |  2013-07-19 00:00:00  |  899 
568     |     2     |  2013-07-19 00:00:00  |  899
368     |     4     |  2012-06-08 00:00:00  |  799 
168     |     2     |  2013-06-28 00:00:00  |  896 
568     |     2     |  2013-07-03 00:00:00  |  897 
568     |     2     |  2010-02-21 00:00:00  |  897 
SQL Fiddleリンクでやろうとしていることを解決しましたが、コードを正しく取得できません。show_id の値に基づいて「899」と言って、899 に等しいすべての行を返します。show_ids にはすべて同じ日付が割り当てられていますが、song_id に基づいて、song_id の前の日付を返したいと考えています。出てきます。
データ返してほしい…
  SHOW_DATE    | SHOW_ID |   SONG_NAME | SONG_ID |     PREVDATE   
July, 19 2013  |     899 | Song Name A |      51 | April, 24 2013 
July, 19 2013  |     899 | Song Name B |     368 | April, 08 2012 
July, 19 2013  |     899 | Song Name E |      13 | FIRST TIME 
July, 19 2013  |     899 | Song Name D |     568 | July, 03 2013
ここでの私のコードは、2013 年 7 月 19 日より前の前の日付、つまり 2013 年 7 月 3 日を返し、それをすべての PrevDate に入れています。誰でも私を助けることができますか?私は最も経験豊富なコーダーではなく、サブクエリをグループ化しているため、ここで行ったことを実行できないと思います。ありがとうございます!
 SELECT tbl_shows.show_date, tbl_shows.show_id, 
 tbl_songs.song_name, tbl_shows.song_id, (
    SELECT
        MAX(show_date)
    FROM tbl_shows AS fdate
    WHERE tbl_shows.show_date > show_date 
 ) As PrevDate
  FROM tbl_shows LEFT JOIN tbl_songs
  ON tbl_shows.song_id = tbl_songs.song_id
  WHERE tbl_shows.show_id = 899