私はいくつかの(MySQL)テーブルを持っています。興味深いのはCampaignRegion
、外部キーをaに格納し、Campaign
1つの外部キーを、、、、、またはのいずれかに格納City
するCounty
ことです。場所固有の外部キーセットは常に1つだけで、他はです。District
State
Country
NULL
テーブルは次の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
するを取得する必要があります。Campaigns
City
County
District
State
Country
City
これは実際には非常に簡単で、私は次のようなものを思いつきました。
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
一致するソート済みの結果セット、次に一致するもの、次に一致するものなど(クエリ内のの順序など)を取得したいのですが、これを行う簡単な方法はありますか?またはのこのクエリに基づいて(最初の一致)をどうしますか?どう思いますか?City
County
District
OR
SELECT
Campaign
JOIN
SUBSELECT
ご協力ありがとうございました。