2014-12-29 115 views
1

如何查詢淘汰時間表誰擁有具有空appointment_id slot_details。下面是一個示例數據集:用途,其中查詢在JSONB數據類型在Rails的Postgres的

id: 98, 
    consulting_location_doctor_id: 498, 
    schedule_date: Thu, 15 Jan 2015 00:00:00 IST +05:30, 
    slot_details: 
    [{"end"=>"2015-01-15T15:00:00.000+00:00", "start"=>"2015-01-15T14:30:00.000+00:00", "title"=>" 2:30 pm to 3:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T15:30:00.000+00:00", "start"=>"2015-01-15T15:00:00.000+00:00", "title"=>" 3:00 pm to 3:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T16:00:00.000+00:00", "start"=>"2015-01-15T15:30:00.000+00:00", "title"=>" 3:30 pm to 4:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T16:30:00.000+00:00", "start"=>"2015-01-15T16:00:00.000+00:00", "title"=>" 4:00 pm to 4:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T17:00:00.000+00:00", "start"=>"2015-01-15T16:30:00.000+00:00", "title"=>" 4:30 pm to 5:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T17:30:00.000+00:00", "start"=>"2015-01-15T17:00:00.000+00:00", "title"=>" 5:00 pm to 5:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T18:00:00.000+00:00", "start"=>"2015-01-15T17:30:00.000+00:00", "title"=>" 5:30 pm to 6:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T18:30:00.000+00:00", "start"=>"2015-01-15T18:00:00.000+00:00", "title"=>" 6:00 pm to 6:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T19:00:00.000+00:00", "start"=>"2015-01-15T18:30:00.000+00:00", "title"=>" 6:30 pm to 7:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T19:30:00.000+00:00", "start"=>"2015-01-15T19:00:00.000+00:00", "title"=>" 7:00 pm to 7:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T20:00:00.000+00:00", "start"=>"2015-01-15T19:30:00.000+00:00", "title"=>" 7:30 pm to 8:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T20:30:00.000+00:00", "start"=>"2015-01-15T20:00:00.000+00:00", "title"=>" 8:00 pm to 8:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T21:00:00.000+00:00", "start"=>"2015-01-15T20:30:00.000+00:00", "title"=>" 8:30 pm to 9:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T21:30:00.000+00:00", "start"=>"2015-01-15T21:00:00.000+00:00", "title"=>" 9:00 pm to 9:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T22:00:00.000+00:00", "start"=>"2015-01-15T21:30:00.000+00:00", "title"=>" 9:30 pm to 10:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T22:30:00.000+00:00", "start"=>"2015-01-15T22:00:00.000+00:00", "title"=>"10:00 pm to 10:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T23:00:00.000+00:00", "start"=>"2015-01-15T22:30:00.000+00:00", "title"=>"10:30 pm to 11:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T23:30:00.000+00:00", "start"=>"2015-01-15T23:00:00.000+00:00", "title"=>"11:00 pm to 11:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-16T00:00:00.000+00:00", "start"=>"2015-01-15T23:30:00.000+00:00", "title"=>"11:30 pm to 12:00 am", appointment_id: ""}], 
    start_and_end_time: Thu, 15 Jan 2015...Fri, 16 Jan 2015, 
    deleted_at: nil, 
    deleted_by_id: nil, 
    created_at: Tue, 30 Dec 2014 04:28:06 IST +05:30, 
    updated_at: Tue, 30 Dec 2014 04:28:06 IST +05:30> 

我也嘗試了guides中的示例。沒有關於在json數組上查詢的例子。請幫忙。

+0

可能重複[如何使Rails 4.2與Postgres Jsonb一起工作?](http://stackoverflow.com/questions/27462929/how-to-make-rails-4-2-work-with-postgres-jsonb) – khampson

+0

任何特定的原因你爲此使用JSON?你的'slot_details'看起來是非常一致的結構,一個單獨的表可能是一個更好的主意。 –

+0

@ muistooshort我決定去這個結構,因爲。你看到的那一行是爲了一個單一的醫生諮詢位置。醫生可以有許多這樣的諮詢位置,每個諮詢位置在一天中有多個位置。如果我把它作爲一個獨立的桌子出來,不會很快變得太大? – Aravind

回答

0

也許這可以幫助你:

slot -> 'slot_details' @> '[{"end"=>"2015-01-15T20:00:00.000+00:00"}]' 

的想法是問,如果部分子陣列包含。如果你在一個陣列中BUN的對象不是會改爲(讓我們說我們有一個配置文件對象):

profile -> 'basics' @> '{"name":"john"}' 

不要上當,想在這裏使用?代替@>

相關問題