我想感謝那些最近幫助過我的人。我的目標非常接近我的目標,但我一直在編碼知識中遇到一些障礙。我有創建該表的代碼,但CSHOW列出錯了。SQL計數兩個日期之間有多少條記錄,並返回該計數
CREATE TABLE tbl_songs
(`song_id` int, `song_name` varchar(11));
INSERT INTO tbl_songs
(`song_id`, `song_name`)
VALUES
(51, 'Song Name A'),
(368, 'Song Name B'),
(168, 'Song Name C'),
(568, 'Song Name D'),
(13, 'Song Name E');
CREATE TABLE tbl_shows
(`song_id` int, `song_order` int, `show_date` datetime, `show_id` int)
;
INSERT INTO tbl_shows
(`song_id`, `song_order`, `show_date`, `show_id`)
VALUES
(51, 1, '2013-07-19 00:00:00', 899),
(568, 2, '2013-07-19 00:00:00', 899),
(168, 3, '2013-07-19 00:00:00', 899),
(13, 4, '2013-07-19 00:00:00', 899),
(368, 1, '2013-07-06 00:00:00', 898),
(368, 1, '2013-07-03 00:00:00', 897),
(368, 1, '2013-05-27 00:00:00', 896),
(51, 1, '2013-04-10 00:00:00', 895),
(168, 1, '2013-04-10 00:00:00', 895),
(513, 1, '2013-03-12 00:00:00', 894),
(13, 1, '2013-03-03 00:00:00', 893);
CODE
SELECT DATE_FORMAT(a.show_date,'%m/%d/%y') as show_date, a.song_order, a.show_id,
b.song_name, a.song_id, (
SELECT
IFNULL(MAX(DATE_FORMAT(show_date,'%m/%d/%y')), 'NEW SONG')
FROM tbl_shows AS c
WHERE a.show_date > c.show_date and a.song_id = c.song_id
) As PrevDate,
(
SELECT
COUNT(*) FROM tbl_shows AS d
where a.show_date > d.show_date
) As cShow
FROM tbl_shows a, tbl_songs b
WHERE a.song_id = b.song_id
AND a.show_id = 899
我期待算多少節目已經在SHOW_DATE和PrevDate間奏:
| SHOW_DATE | SONG_ORDER | SHOW_ID | SONG_NAME | SONG_ID | PREVDATE | CSHOW |
-------------------------------------------------------------------------------
| 07/19/13 | 1 | 899 | Song Name A | 51 | 04/10/13 | 7 |
| 07/19/13 | 2 | 899 | Song Name D | 568 | NEW SONG | 7 |
| 07/19/13 | 3 | 899 | Song Name C | 168 | 04/10/13 | 7 |
| 07/19/13 | 4 | 899 | Song Name E | 13 | 03/03/13 | 7 |
這是通過查詢此數據和代碼中發現對於每首歌曲......並返回該行的該值。任何人都可以將我指向正確的方向嗎?謝謝。 SQLFiddle http://sqlfiddle.com/#!2/57d96/34
在您的查詢中,您有4行具有相同的show_id。即使show_id是相同的,你是否期望計算行數? –
我不想計算行......我正在計算mySQL中Show_date和PrevDate之間的節目,歌曲名稱E的例子應該有5個演出,因爲播放,歌曲名稱C應該是3節目等。我有數據點是我正在尋找的值。謝謝。 – davejt