簡體   English   中英

選擇多行,條件為一行mysql

[英]select multiple rows with condition for one row mysql

我正在嘗試加入2個表,事件和event_dates,每個事件都有很多日期

事件表包含IDname ; event_dates-每天的IDevent_iddateplace_idevent_dates表中的event_dates 對於不同的日子, place_id可以不同。

我想顯示本月的事件列表-但只有那些,今天的事件具有place_id = 1。

我應該為此編寫什么SQL查詢? 謝謝

編輯

抱歉,我錯過了一定的結果,我不得不為每個事件顯示event_dates表。

所以結果會像

1) event id and name with its dates for this month (and for today place_id = 1)
2) other event id and name  with its dates for this month (and for today place_id = 1)
etc

SELECT e.*, d.date
FROM events e
JOIN event_dates d
ON e.id = d.event_id
WHERE d.date BETWEEN {d '2013-08-01'} and {d '2013-08-31'}
AND d.place_id = 1

該查詢不起作用,因為,如果在整月中place_id為2、3或其他,並且僅在今天1的情況下,那我將只有event_dates表中僅包含今天行的事件

結果應如下

                Aug1        Aug2        Aug3 ....   Aug21(today)    . . .Aug30
eventName1      placeId     placeId     placeId      placeId            placeId
eventName2      placeId     placeId     placeId     placeId             placeId
eventName3      placeId     placeId     placeId     placeId             placeId

因此,我正在顯示帶有本月信息的偶數列表,但是列出的所有此類事件今天都應該具有placeId = 1。

嘗試這個:

SELECT e.*, d.date
FROM events e
JOIN event_dates d
ON e.id = d.event_id
WHERE d.date BETWEEN {d '2013-08-01'} and {d '2013-08-31'}
AND d.place_id = 1

但是我有一個疑問。 如果您有更多的日子與place_id = 1,您想顯示更多的時間?

嘗試這樣的事情:

SELECT *.events from events 
left join event_date 
on id.events = event_dates.event_id 
where event_dates.dates between '01/08/2013' AND '31/08/2013' 
AND event_dates.place_id = 1;

查詢:

SELECT events.id, events.name,event_dates.date,event_dates.place_id
FROM events
INNER JOIN event_dates
ON events.id=event_dates.event_id
WHERE event_dates.date = sysdate and event_dates.place_id=1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM