0

そこで、m.zam が答えを導き出しました。どうもありがとうございました。誰かがこれをもう少し進めることができますか? これが2つのテーブルです。私が今やろうとしていることが 2 つあります。返された null の日付を「新しい曲」という言葉に置き換え、曲が最後に再生されてから何回のショーが行われたかを調べようとしています。

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 

以下のコードはこれを返すように機能していますが、さらにデータが必要です。最初のテーブルを 2 番目のテーブルに変えたいと考えています。ありがとうございます!コードはここにあります: http://sqlfiddle.com/#!2/f3e29/1

最初

  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 | June, 08 2012   |
July, 19 2013  |     899 | Song Name E |      13 | (null)          |
July, 19 2013  |     899 | Song Name D |     568 | July, 03 2013   |

2番目

  SHOW_DATE    | SHOW_ID |   SONG_NAME | SONG_ID |     PREVDATE    |  SHOWS SINCE
July, 19 2013  |     899 | Song Name A |      51 | April, 24 2013  |       2
July, 19 2013  |     899 | Song Name B |     368 | June, 08 2012   |       4
July, 19 2013  |     899 | Song Name E |      13 | NEW SONG        |       0
July, 19 2013  |     899 | Song Name D |     568 | July, 03 2013   |       0



   SELECT a.show_date, a.show_id, 
    b.song_name, a.song_id, (
    SELECT
      IFNULL(MAX(show_date),'NEW SONG')
    FROM tbl_shows AS c
   WHERE a.show_date > c.show_date and a.song_id = c.song_id
   ) As PrevDate
   FROM tbl_shows a, tbl_songs b
   WHERE a.song_id = b.song_id
   AND a.show_id = 899

IFNULL は SQL で機能しますが、PHP を使用して返される日付の形式を mm/dd/yy のような形式に変更します。SQL で日付を変更してから PHP に送信するか、PHP で IF ELSE ステートメントを記述して返すことができますか? mm/dd/yy または 'NEW SONG' のいずれか

  echo "<td style='padding: 10px; width:45px;'>" .date("m/d/y",   
   strtotime($row["PrevDate"]))." </td>";
4

1 に答える 1