我有一次旅行,有許多居住地。我需要一個單一的查詢,返回沒有指定居住地信息的所有行程。和所有符合特定居住條件的旅行。對連接表中沒有鍵的所有記錄以及具有匹配鍵的所有記錄的單個查詢
我可以從該查詢第一:
SELECT * FROM `trips` WHERE (((NOT EXISTS (SELECT id FROM residencies WHERE trips.id = residencies.trip_id))
但要獲得第二,我需要添加此位和:
INNER JOIN `residencies` ON (`trips`.`id` = `residencies`.`trip_id`)
添加之前加入WHERE子句要求具有居住ID和沒有居住ID的結果。這顯然沒有任何回報。那麼我怎麼寫這個來獲得一個查詢中的完整結果集呢?存儲過程是不允許的。
我正在使用Rails,因此如果答案是Rails特有的,那麼這是獎金(但絕對不是必需的)。如果有人能夠證明searchlogic插件如何做到這一點,那麼這是一項巨大的好處。
目前,我有一個名爲範圍的第一個要求:
Trip.named_scope :residencies_empty, :conditions => ['NOT EXISTS (SELECT id FROM residencies WHERE trips.id = residencies.trip_id)']
第二個要求是可以通過searchlogic:
Trip.residences_id_equals(id)
理想的解決方案將是一個searchlogic範圍,看起來像這樣:
Trip.residencies_null_or_residencies_id_equals(id)
您可以發佈旅行和居住表的定義嗎? – 2009-10-02 17:24:26