2016-03-31 26 views
1

mysqlステートメントのヘルプが必要です。 私は2つのテーブルを持っていますが、1つはイベントの詳細を、もう1つはイベントの日付を保持しています。今日のmysqlと同等の最小日付と最小日付を取得する方法

今日終了するすべてのイベントの日付を表示する必要があります。

私はこれらの日付を持っている場合があります。私はこのクエリを試してみました 29/03/2016 30/03/2016 31/03/2016

を:

SELECT a.event_id, event_name, event_location, event_desc, 
MIN(a.event_date) AS from_date, MAX(a.event_date) AS to_date 
FROM event_time a 
LEFT JOIN event_time b 
ON b.event_id = a.event_id 
JOIN events c 
ON a.event_id = c.event_id 
WHERE b.event_date <= NOW() 
GROUP BY a.event_id 

しかし中from_dateフィールド私は2011年3月31日に取得します。

誰でも必要なものについて正しい記述を作成できますか?

は私が正しくあなたを理解している場合、あなたはevent_times 2回参加する必要はありませんので、あなたは

+0

なぜLEFT JOIN event_time bを使用していますか?私は同じテーブルに参加することを意味します –

答えて

2

さてあなたは、不足のビット情報を質問ありがとう:私が変更した

SELECT a.event_id, event_name, event_location, event_desc, 
     MIN(a.event_date) AS from_date, MAX(a.event_date) AS to_date 
FROM event_time a 
JOIN events c 
ON a.event_id = c.event_id 
WHERE a.event_date >= NOW() 
GROUP BY a.event_id 

あなたのwhere句あなたはsmalle wan't場合は、今日の日付に大きなまたは等しい日付をwan'tが、今私はあなたのトピックで探していると私はあなたが反対を書い参照、そう言ったので

a.event_date >= NOW() 

へr、それを回す。

また、一般的に、あなたはEVENT_TIME BにLEFT JOININGあり、あなたはあなたのwhere句であります、rightテーブルの上にフィルターのみにする必要があります。これは、自動的に内部結合に参加するなり

WHERE b.event_date <= NOW() 

ON句。あなたの場合:

LEFT JOIN event_time b 
ON b.event_id = a.event_id AND 
    b.event_date <= NOW() 
+0

ああ、混乱のために申し訳ありません、一緒にいくつかのサイトで働く、私の考えは混乱しています。 もう少し説明しましょう: 私は今日または将来中止するイベントを表示する必要があります。 開始日を終了日まで表示する必要があります。 イベントの日付は、 29/03/2016、30/03/2016、31/03/2016、01/04/2016(明日) です。私のイベントでは、表示する必要があります: イベント日時:29/03/2016から01/04/2016 sagiのステートメントでは、WHEREステートメントのために取得するto_dateは31/03/2016で、01/04/2016ではありませんそれは私が苦労していることです。 –

+0

@SigalZahaviそれからどこを削除しますか、私は理解しません、あなたは今日前に起きた日付だけを望んでいる、なぜあなたは1/4を手に入れたいですか? – sagi

+0

サギ、今日終わるイベントや今日後のイベントがすべて必要です。私がどこにいなくても、私がデータベースに持っているすべての出来事を、たとえ既に終わったとしても、私はそれを得るでしょう。終了日は昨日、先週、先月、または昨年です。私が何を言おうとしているのか理解してもらいたいと思います。 私は、今日までに起きた日だけを欲しいと言っていませんでした。私は、「今日または将来終わるイベントを表示する必要があります。 –

関連する問題