所以m.zam得出了答案。非常感谢你。 任何人都可以更进一步吗? 这是两张桌子。我正在尝试做两件事,用“新歌”替换一个返回的空日期,我试图找出自上次播放歌曲以来有多少节目。
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
我的代码正在努力返回这个但我需要更多数据。我想把第一张桌子变成第二张桌子。提前致谢!代码可以在这里找到: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 |
第二
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之前更改SQL中的日期,或者在SQL中编写IF ELSE语句PHP返回mm / dd / yy或'NEW SONG'
echo "<td style='padding: 10px; width:45px;'>" .date("m/d/y",
strtotime($row["PrevDate"]))." </td>";
答案 0 :(得分: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