データベースに 2 つのテーブルがあります。
(1) フレーズ:
t_phrase
========
I like
They prefer
...
Somebody else wants
と
(2) 場所:
n_id t_place
==== =======
1 London
2 Paris
...
N New York
テーブルPHRASES
には少なくとも と同じ数の行がありPLACES
ます。これらの 2 つのテーブルを結合して、それぞれにplace
1 つずつすべてのを選択phrase
する必要がありますが、フレーズは複数の場所にランダムに分散する必要があります。テーブル全体places
はそれほど大きくありません: おそらく 3 ~ 4,000 行程度WHERE
ですが、出力を最大で約 200 箇所に制限する追加の節があります。
理想的には、これを 1 つの SQL ステートメントにしたいと考えていますが、これまでのところ、これについて理解できていません。したがって、2 番目のオプションは、 の行を返すストアド関数です(int, varchar, varchar)
。このために、私は次のようなことを考えていました。
- すべてのフレーズをランダムな順序で選択して varchar の配列に入れる
- 一度に 1 つずつ場所をループし、配列の次のフレーズと一緒に返します
どういうわけか、これは非常に非効率的なように思えますが、より良いものを思いつくことはできません.
より良いアイデアを提案できますか?または、さらに良いのは、1 つのステートメント SQL でしょうか?
前もって感謝します。
編集:結果セットでフレーズを繰り返さないでください。少なくとも場所と同じ数のフレーズが常に存在します。