そこで、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>";