2

スポーツ Web サイトのフィクスチャを生成しようとしています。関連する列が member_id と League_id である、Members というテーブルがあります。League_id は、前のページのフォームから変数 $leagueid として渡されます。

そのリーグIDに関連するすべてのメンバーIDを引き出しています...

$result = mysql_query("SELECT member_id FROM Members WHERE league_id = '$leagueid'")

これらすべてのメンバー ID のフィクスチャを生成し、そのデータを MySQL テーブルの「Fixtures」に挿入する必要があります。そのテーブルのデータの各行には、次を含める必要があります。

player1 - 最初のプレイヤーの
member_id player2 - 2 番目のプレイヤーの member_id
week - 試合が行われる週を示す整数
League_id

ただし、適用する必要がある特別な条件もいくつかあります。

  1. 3 週ごとに無料にする必要があります (つまり、3、6、9、12 週など)。これらの週に試合をスケジュールすることはできません

  2. 一致を 2 倍にするオプション (前のページのフォームから選択され、$double と呼ばれるチェックボックス変数として渡される) が必要です。これは、フィクスチャの完全なラウンドを 1 ラウンド生成した後、生成されたリストを取得し、プレーヤー 1 と 2 の ID を交換して、それらすべてを複製する必要があることを意味します。したがって、フィクスチャの 1 ラウンドは次のようになります。

1週目

1対2
3対4

2週目

1対3
2対4

3週目

1対4
2対3

次に、ID を交換して、別のセットを追加します...

4週目

2対1
4対3

第5週

3対1
4対2

第6週

4 対 1
3 対 2

私が探しているのは、リストしたすべての特別な条件を念頭に置きながら、これらすべてのフィクスチャを生成するコードです。

これはすべて PHP で可能であることはわかっていますが、代わりに 1 つの SQL クエリを使用して実行できると思います。誰でも私を助けることができますか?? ありがとう!!

PS私はmysqliではなくmysqlを使用していることを知っています。現在mysqliに移行しようとしていますが、別の質問に投稿したいくつかの問題があり、まだ正しい答えが得られていません。

4

1 に答える 1

1
SELECT * FROM ints;
+---+
| i |
+---+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+---+

SELECT * FROM ints WHERE MOD(i,3) > 0;
+---+
| i |
+---+
| 1 |
| 2 |
| 4 |
| 5 |
| 7 |
| 8 |
+---+

2番目の部分は単純に

INSERT INTO my_table SELECT week_id+3, column_2, column_1 FROM my_table; 
于 2013-09-03T08:46:08.333 に答える