내 스포츠 선택 응용 프로그램에 대한 쿼리를 작성하려고합니다. 한 테이블의 모든 정보를 다른 테이블의 2 개 열과 함께 표시하고 싶습니다. 하나의 테이블에서 모든 정보를 선택하는 쿼리를 작성할 수 있지만 대답에 2 개의 행을 추가하는 쿼리를 작성하는 데 어려움을 겪고 있습니다. 내가 사용하는 두 개의 테이블은 다음과 같습니다. 그건 그렇고 이것은 모두 Postgresql에 있습니다.
이 테이블에서 모든 것을 선택하고 싶습니다.
Table "public.weekly_stats"
Column | Type | Modifiers
---------+-----------------------+--------------------
week_no | integer | not null
game_no | integer | not null
home | character varying(40) |
away | character varying(40) |
spread | double precision | not null default 0
winner | character varying(40) |
Indexes:
"weekly_stats_pkey" PRIMARY KEY, btree (week_no, game_no)
Foreign-key constraints:
"weekly_stats_away_fkey" FOREIGN KEY (away) REFERENCES team(name)
"weekly_stats_home_fkey" FOREIGN KEY (home) REFERENCES team(name)
그리고 각 팀의 승패를 표시하고 싶습니다. 이 테이블을 사용합니다 ...
Table "public.team"
Column | Type | Modifiers
--------+-----------------------+--------------------
name | character varying(40) | not null
wins | integer | not null default 0
losses | integer | not null default 0
Indexes:
"team_pkey" PRIMARY KEY, btree (name)
Referenced by:
TABLE "weekly_stats" CONSTRAINT "weekly_stats_away_fkey" FOREIGN KEY (away)
첫 번째 테이블에서 모든 정보를 선택할 수 있습니다.
Select week_no, game_no, home, wins, losses, away, wins, losses, spread, winner from weekly_stats inner join team on name.team = weekly_stats.team;
게시 한 SQL이 weekly_stats.team
존재하지 않는 필드를 사용하려고 합니다. 팀이에 weekly_stats.home
있고 두 팀이 weekly_stats.away
있으므로 두 개의 조인이 필요합니다.
그리고 동일한 테이블을 두 번 조인하려면 별칭을 제공해야합니다. 여기 에서 조인에서 테이블의 실제 이름을 추가 team1
하거나 team2
뒤에 추가 하면됩니다.
Select
weekly_stats.week_no,
weekly_stats.game_no,
weekly_stats.home,
team1.wins,
team1.losses,
weekly_stats.away,
team2.wins,
team2.losses,
weekly_stats.spread,
weekly_stats.winner
from weekly_stats
inner join team team1 on team1.name = weekly_stats.home
inner join team team2 on team2.name = weekly_stats.away ;
내부 조인이 작동합니다. 테이블 team
에 팀이 누락 될 가능성이있는 경우 테이블 에서 데이터가 누락 된 경우 승 / 패에 대한 정보 left join
를 제공 하도록 변경할 수 있습니다 .NULL
team
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다