2016-08-01 7 views
0

This is my tableWie Innen zu verdoppeln kommen in mysql

Wenn ich das Datum 20.160.730 (Woche 30) wählen, zeigt es alle dayID in 30 Wochen an der dayRemark Tisch.

Zusätzlich möchte ich auch Limit in der Mitte 3 Ergebnis. Beispiel: Wenn Ergebnis: 20160725, 20160727, 20160728, 20160730, 20160731. Ich will mein Endergebnis ist: 20160728, 20160730, 20160731

(weil mein erstes gewähltes Datum 20.160.730 ist) Unten ist mein Code

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

Wie stelle ich die calander.week und Grenze in der Mitte 3?

Antwort

1

könnten Sie UNION und LIMIT verwenden, um die die N Zeilen auszuwählen, in dem dayID als das angeforderte Datum greated und für die N Zeilen das gleiche tun, wo dayID kleiner ist. In Ihrem Fall N = 1 also Sie haben:

(
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 
) 

Kein sicher, es ist der beste Weg, es zu tun.

+0

http://i.stack.imgur.com/QsyhH.png oben ist mein Tisch, ich möchte auch den Tag auf der gleichen Woche zeigen, Beispiel: Ich bin 20.160.730 ausgewählt, ist der Tag, Woche 30 , so dass der ganze Tag in Woche 30 angezeigt wird. – Ricky