ストアド プロシージャを作成したいのですが、どのアプローチが適切なのか、また MySQL でこれが可能かどうかもわかりません。
私の問題を紹介させてください。次のような列を持つテーブルがあるとします。
TABLE A
id | Hotel | city_name | region_name | country
1 | A | Amsterdam | North-Holland | Netherlands
2 | B | Amsterdam | North-Holland | Netherlands
3 | C | Leiden | North-Holland | Netherlands
4 | D | Katwijk | North-Holland | Netherlands
5 | E | Leiden | North-Holland | Netherlands
6 | F | Katwijk | North-Holland | Netherlands
このクエリを実行するたびに 3 つの結果のみを取得したいので、結果を次の順序で作成する必要があります。
- 都市が 3 つ以上ある場合 (この場合、ユーザーはアムステルダムを選択できます)、
city_name=Amsterdam
アムステルダムのランダムな 3 つの都市を返します。 - アムステルダムのレコードが 3 つ未満の場合、アムステルダムを含むレコードのいずれかを返します + ランダム レコードを返しますが、
region=North-Holland
返されるレコードの合計量は常に 3 である必要があります (例: 2 つのレコードがあり、city= Amsterdam
+ 1 つのランダム レコードを取得します)例 2からregion=North Holand;
:レコードが 1 つあり、city=Amsterdam
ランダムなレコードが 2 つあり、ここでregion="north Holland"
)
SQLでこれを行うことは可能ですか?それとも、phpですべてのレコードを取得してから、各レコードを反復処理する必要がありますか?
おそらく、プロシージャで 2 つの引数を渡す必要があります (city_name, region )。
これまでのところ、いくつかの基本的な SQL クエリを試しましたが、うまくいきませんでした。