2016-07-11 27 views
0

MYSQLでForループまたはWhileループを実行できますか?MYSQL For/Whileループ

私は次のコードの抜粋を持っているが、完全なコードはhome_id_15、home_score_15、away_id_15まで行くとaway_score_15:彼らは15に到達するまで、サブSELECTS

$query3 = ' 
SELECT match_date, fixture_id, COUNT(a.home) AS home, SUM(a.points) AS points FROM 
    ( 
     SELECT match_date, fixture_id, home_id_1 AS home, home_score_1 AS points FROM scores 
     WHERE home_id_1 =' .intval($_REQUEST['ID']).' 
     UNION ALL 
     SELECT match_date, fixture_id, away_id_1 AS home, away_score_1 AS points 
     FROM scores 
     WHERE away_id_1 =' .intval($_REQUEST['ID']).' 
     UNION ALL 
     SELECT match_date, fixture_id, home_id_2 AS home, home_score_2 AS points 
     FROM scores 
     WHERE home_id_2 =' .intval($_REQUEST['ID']).' 
     UNION ALL 
     SELECT match_date, fixture_id, away_id_2 AS home, away_score_2 AS points 
     FROM scores 
     WHERE away_id_2 =' .intval($_REQUEST['ID']).' 
     UNION ALL) a 
    GROUP BY match_date' 

第一及び第二の基本的に繰り返されています。

これは、ビット長ったらしいようで、それが出力

それぞれ
home_id_1, home_score_1, away_id_1, away_score_1 [up to] home_id_15, home_score_15, away_id_15, away_score_15 

にMYSQLのループを使用することが可能だ場合、私は不思議でしたか?

ありがとう、 Dan。

+0

。 spを使用できない場合は – Drew

+0

スキーマを正規化して処理する列が15種類ありません。それらはテーブルの15の異なる行になければなりません。 – Barmar

+0

私は全くこのスキーマを使用しません。犯罪は意図されていません。 nuttinとインデックスには参加できません。戦略はありません。 – Drew

答えて

1

データベースをもう少し正常化する必要があるようです。各行に6つのスコアがあるとします。各スコアを列にするのではなく、外部キー列とスコア列を使用して「スコア」などの別のテーブルを作成します。次に、このスコア表と表を結合します。

例:

  • TABLE:チーム

    • TEAM_ID
  • TABLE:スコア

    • TEAM_ID
    • は藤堂


SELECT t.*, s.score 
FROM team t 
join scores s 
on t.team_id=s.team_id; 

スコア:あなたが保存されてprocsでwhileループを行うことができ、あなたのスキーマにmatchesの概念を追加し、Join

+0

ありがとうございました。私はデータベースのその面を再評価する必要があるように見えます。私はチーム、選手と得点と会場のテーブルを持っています。 home_id、away_idなどはすべて、players.idの外部キーを指していますが、多くのプレイヤーがあり、多くの得点があるため、これはやりにくいものです。 –