1
我目前有一個相當簡單的數據庫,它定期通過腳本進行更新。我想通過比較2列的相等來過濾結果。 SQL查詢看起來像:Ruby/Datamapper查詢比較不同表中的列
SELECT devices.site_name, devices.device_name, devices.created_at FROM devices, locations WHERE devices.created_at = locations.most_recent_updated_time AND devices.site_name = locations.site_name;
這裏是我的DataMapper模式
class Device
include DataMapper::Resource
property :id, Serial
property :device_name, Text, :required => true
property :site_name, Text, :required => true
property :created_at, DateTime
belongs_to :location
end
class Location
include DataMapper::Resource
property :site_name, Text, :required => true, :key => true
property :most_recent_updated_time, DateTime, :required => true
has n, :devices
end
每個腳本運行它追加新的設備條目,並更新了`時間:在位置表most_recent_updated_time場。以下是表格更新的一個例子。腳本運行
Devices ╔════╦═════════════╦═══════════╦═══════════════════════════╗ ║ ID ║ Device_Name ║ Site_Name ║ Created_at ║ ╠════╬═════════════╬═══════════╬═══════════════════════════╣ ║ 1 ║ Device1 ║ Dallas ║ 2013-07-23T16:59:12-04:00 ║ ║ 2 ║ Device2 ║ Dallas ║ 2013-07-23T16:59:12-04:00 ║ ║ 3 ║ Device3 ║ Chicago ║ 2013-07-23T16:59:12-04:00 ║ ║ 4 ║ Device4 ║ Dallas ║ 2013-07-24T18:00:00-04:00 ║ ║ 5 ║ Device5 ║ Chicago ║ 2013-07-24T18:00:00-04:00 ║ ╚════╩═════════════╩═══════════╩═══════════════════════════╝ Location ╔═══════════╦═══════════════════════════╗ ║ Site_Name ║ Most_Recent_Updated_Time ║ ╠═══════════╬═══════════════════════════╣ ║ Dallas ║ 2013-07-24T18:00:00-04:00 ║ ║ Chicago ║ 2013-07-24T18:00:00-04:00 ║ ║ Boston ║ 2013-07-24T18:00:00-04:00 ║ ╚═══════════╩═══════════════════════════╝
所以,如果我運行查詢腳本運行後,我想
Devices ╔════╦═════════════╦═══════════╦═══════════════════════════╗ ║ ID ║ Device_Name ║ Site_Name ║ Created_at ║ ╠════╬═════════════╬═══════════╬═══════════════════════════╣ ║ 1 ║ Device1 ║ Dallas ║ 2013-07-23T16:59:12-04:00 ║ ║ 2 ║ Device2 ║ Dallas ║ 2013-07-23T16:59:12-04:00 ║ ║ 3 ║ Device3 ║ Chicago ║ 2013-07-23T16:59:12-04:00 ║ ╚════╩═════════════╩═══════════╩═══════════════════════════╝ Location ╔═══════════╦═══════════════════════════╗ ║ Site_Name ║ Most_Recent_Updated_Time ║ ╠═══════════╬═══════════════════════════╣ ║ Dallas ║ 2013-07-23T16:59:12-04:00 ║ ║ Chicago ║ 2013-07-23T16:59:12-04:00 ║ ║ Boston ║ 2013-07-23T16:59:12-04:00 ║ ╚═══════════╩═══════════════════════════╝
後,它返回Device4和Device5。
呀,那是一個錯字。修正了,謝謝!感謝您的幫助 – Eric