私は本質的にテーブルの 2 つのグループを持っています。「props_」と「avail_」。それぞれ約。UNION ALLを使用して結合した4つのテーブル。
特定の日付範囲の空室状況の表に表示されない、必要な場所と宿泊施設を選択する必要があります。
property tables... 'props_01', 'props_02', 'props_03', 'props_04'
id code location sleeps
1 7A06E91875 devon 2
2 440ac2664c cornwall 4
5 0474d4882b devon 2
availability tables... 'avail_01', 'avail_02', 'avail_03', 'avail_04'
id prop_code date
1 440ac2664c 20130208
2 440ac2664c 20130209
3 440ac2664c 20130210
4 440ac2664c 20130211
5 440ac2664c 20130212
これらの空き状況テーブルには、すべての予約日が含まれています。したがって、指定された日付範囲の空室状況レコードがないプロパティ テーブルからのみ選択したいと考えています。これは私がクエリを実行しようとしていた方法です...
(avail.date != '20130209' AND avail.date != '20130210' AND avail.date != '20130211' AND avail.date != '20130212' AND avail.date != '20130213') OR (avail.date != '20130210' AND avail.date != '20130211' AND avail.date != '20130212' AND avail.date != '20130213' AND avail.date != '20130214')
また、場所と睡眠のプロパティ テーブルにフィルターを適用する必要があります。
可用性を含める以外のすべてを実行するクエリは以下のとおりです。これは正常に機能しますが、可用性テーブルもクエリするように変更する最善の方法がわかりません...
SELECT prop.* FROM (SELECT * FROM `props_01` UNION ALL SELECT * FROM `props_02` UNION ALL SELECT * FROM `props_03` UNION ALL SELECT * FROM `props_04`) prop WHERE prop.location='Devon' AND prop.sleeps>='4' ORDER BY prop.sleeps ASC