1
所以,我有這樣的SQL查詢:三左連接在行返回意想不到的結果
select
o.id,
o.name,
d.name,
w.day,
o.suspended
from resource o
left join resource d on d.vehicle_ID = o.ID
left join week_days_availability_to_resource aw on d.ID=aw.resource_ID
left join week_days_availability w on aw.calendar_ID=w.ID
where o.IS_DELETED <> true
and (d.IS_DELETED is null or d.IS_DELETED <> true)
and o.marketId = 98
and (w.day = 3 or w.day is null)
and (o.suspended <> true or o.id in (-1))
它返回我需要的所有行 - excep只是一個。表resource o
中有一行與resource d
連接,然後連接week_days_availability_to_resource
(表中有一些行,resource_ID
等於d.ID
)。問題是week_days_availability
中沒有行,day
等於三,所以它不返回任何內容。但我期望mysql
返回值day
字段這一行返回 - 因爲我認爲這是left join
實際上是什麼。好像我錯了。
任何想法?
謝謝你的回覆,我把這個條件移到了'on'子句中,但是現在我又遇到了另一個問題 - 所有行的'day'字段都等於'NULL',即使我檢查我的查詢,日「實際上是'3'。很奇怪。 – aga
@aga。 。 。這實際上很有意義 - 左連接將返回3或NULL。這似乎是你想要的基礎上的問題「問題是,沒有排在day_days_availability一天等於三,所以它什麼都沒有返回。」 –