私はいくつかの(MySQL)テーブルを持っています。興味深いのはCampaignRegion、外部キーをaに格納し、Campaign1つの外部キーを、、、、、またはのいずれかに格納CityするCountyことです。場所固有の外部キーセットは常に1つだけで、他はです。DistrictStateCountryNULL
テーブルは次のCampaignRegionようになります。
mysql> describe CampaignRegion;
+-------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| campaign_id | int(11) | YES | MUL | NULL | |
| country_id | int(11) | YES | MUL | NULL | |
| state_id | int(11) | YES | MUL | NULL | |
| district_id | int(11) | YES | MUL | NULL | |
| county_id | int(11) | YES | MUL | NULL | |
| city_id | int(11) | YES | MUL | NULL | |
+-------------+---------+------+-----+---------+----------------+
を選択するためのクエリが必要Campaignです。私はを持っており、それ自体、または、または、またはのいずれかに一致Cityするを取得する必要があります。CampaignsCityCountyDistrictStateCountryCity
これは実際には非常に簡単で、私は次のようなものを思いつきました。
SELECT count(id) as campaign_count, campaign_id
FROM CampaignRegion
WHERE (city_id = 32076 OR district_id = 127 OR state_id = 7 OR country_id = 156)
GROUP BY campaign_id
HAVING campaign_count > 0;
ただし、最初にCampaigns一致するソート済みの結果セット、次に一致するもの、次に一致するものなど(クエリ内のの順序など)を取得したいのですが、これを行う簡単な方法はありますか?またはのこのクエリに基づいて(最初の一致)をどうしますか?どう思いますか?CityCountyDistrictORSELECTCampaignJOINSUBSELECT
ご協力ありがとうございました。