2016-08-01 86 views
0

This is my table如何翻番內部連接mysql中

如果我選擇日期20160730(第30周),它將在dayRemark表顯示所有的大衛·在30周。

另外,我也要在中間3個結果中限制。 例如:如果結果爲:20160725,20160727,20160728,20160730,20160731. 我想我的最終結果是:20160728,20160730,20160731(因爲我的第一選擇的日期是20160730)

下面是我的代碼

SELECT dayRemark.dayID, calander.week_name, 
FROM dayRemark 
INNER JOIN calander 
    ON dayRemark.dayID = calander.dayID 
where dayRemark.dayID = '20160730' 
group by dayRemark.dayId 

我怎麼把calander.week和限制在中間3?

回答

1

你可以使用UNIONLIMIT以選擇dayID比要求的日期greated的N個行,併爲N行,其中dayID較小做同樣的。在你的情況N = 1所以你有:

(
SELECT dayRemark.dayID, calendar.week_name 
FROM dayRemark 
INNER JOIN calendar ON dayRemark.dayID = calendar.dayID 
where dayRemark.dayID < '20160730' 
group by dayRemark.dayId 
ORDER BY dayRemark.dayID DESC 
LIMIT 1) 
UNION (
SELECT dayRemark.dayID, calendar.week_name 
FROM dayRemark 
INNER JOIN calendar ON dayRemark.dayID = calendar.dayID 
where dayRemark.dayID = '20160730' 
group by dayRemark.dayId 
    ) 
UNION (
SELECT dayRemark.dayID, calendar.week_name 
FROM dayRemark 
INNER JOIN calendar ON dayRemark.dayID = calendar.dayID 
where dayRemark.dayID > '20160730' 
group by dayRemark.dayId 
ORDER BY dayRemark.dayID ASC 
LIMIT 1 
) 

不知道這是最好的辦法。

+0

http://i.stack.imgur.com/QsyhH.png 以上是我的表,我也希望演出當天在同一周, 例:我選擇20160730,白天爲30周,以便在30周內全天顯示。 – Ricky