2016-07-11 3 views
0

MYSQL에서 For 또는 While 루프를 수행 할 수 있습니까?MYSQL For/While 루프

다음 코드 추출물을 가지고 있지만, 전체 코드는 home_id_15, home_score_15, away_id_15 및 away_score_15까지 간다 : 첫 번째 및 제 2 서브 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' 

들이 15에 도달 할 때까지 .

이 보인다

조금 장황하고 각각

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

당신이 저장 프록에서 while 루프를 할 수 있습니다. sp를 사용할 수 없다면 – Drew

+0

스키마를 표준화하는 것이 가장 좋을 것이므로 처리 할 열 집합이 15 가지가 아닙니다. 테이블의 15 가지 행에 있어야합니다. – Barmar

+0

전적으로이 스키마를 사용하지 않을 것입니다. 어떤 의도도 없습니다. nuttin과 인덱스에 참여할 수는 없습니다. 전략은 없습니다. – Drew

답변

1

데이터베이스를 조금 더 정상화해야 할 수도 있습니다. 각 행에 6 점이 있다고 가정 해 봅시다. 각 점수를 하나의 열로 만드는 대신 외래 키 열과 점수 열을 사용하여 "점수"또는 이와 비슷한 식으로 별도의 표를 만듭니다. 그런 다음이 점수 표와 표를 결합하십시오.

예 :

  • 표 : 팀

    • team_id
    • 이름
  • 표 : 점수

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


도도 : 스키마에 matches의 개념을 추가하고 Join

+0

대단히 감사합니다. 데이터베이스의 측면을 다시 평가해야하는 것 같습니다. 팀, 선수, 점수 및 경기장 테이블이 있습니다. home_id, away_id 등은 모두 플레이어를 향하고 있습니다. 외래 키이지만, 많은 플레이어와 많은 점수가 있습니다. 따라서이 점이 다소 비 교적 있습니다. –