Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# join two records

Posted on 2004-03-23
Medium Priority
540 Views
i have a database  called  results in sql server 2000

the fields are the following  :
gameid, idteam, points, goalsinfavor, goalsagainst

everytime a manager reports a game played i have set up 2 commands one inserts the record for hometeam and the other inserts the record for the visiting team

so if a game  had the score 4-2   home wins   then it will insert 2 records
and the record for the home is:
gameid= 300
idteam= 4 (unique for each team)
points = 3
goalsinfavor=4
goals against= 2

and the record for the visitor is:
gameid= 300
idteam= 3(unique for each team)
points = 0
goalsinfavor=2
goals against= 4

how can i do to query by gameid=300
so i can show the score for this game?

or any ideas on how to combine those 2 records
0
Question by:gianitoo
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2

LVL 2

Assisted Solution

lschweer earned 1000 total points
ID: 10662772
i assume you need both team ids in one row then use

SELECT t1.gameid, t1.idteam, t2.idteam, t1.goalsinfavor, t1.[goals against]
FROM Games as t1
LEFT JOIN Games as t2 ON t1.GameID = t2.GameID and t1.idteam<>t2.idteam

there is a drawback for this solution .. you will receive 2 rows per game

if you need one row just filter out the winning teams

WHERE t1.goalsinfavor >= t1.[goals against]

and use a DISTINCT after the select to remove the duplicates for even games

lars
0

LVL 1

Accepted Solution

cubical10 earned 1000 total points
ID: 10664181
This query will give you the score by game (I assumed that your table is called results).

SELECT  gameid, MAX(goalsinfavor) AS Winner, MIN(goalsagainst) AS Loser
FROM results
GROUP BY gameid;
This is the short fast answer, but no reference to team is here.

You did not provide any detail on the other tables in your db, so I did not have much to work with.
With some detail of other tables, I could have built a better query...

For a more complete solution all based on this one table (results), you can create two views.
winnersByGameID and losersByGameID.

winnersByGameID is defined as:
SELECT     gameid, idteam, goalsinfavor, goalsagainst
FROM         dbo.results
WHERE     (points = 3);

losersByGameID is defined as:
SELECT     gameid, idteam, goalsinfavor, goalsagainst
FROM         dbo.results
WHERE     (points =0)

then your report query is this:
SELECT
winnersbygame.gameid, winnersbygame.idteam AS winningteam, winnersbygame.goalsinfavor AS   WinnerGoals,
losersbygame.idteam AS losingteam, losersbygame.goalsinfavor AS LoserGoals
FROM  losersbygame INNER JOIN winnersbygame
ON losersbygame.gameid = winnersbygame.gameid

N.B: this solution does not allow for tie games!  As I said this is a work around because this is the only table defined.

Hope this helps...
0

LVL 2

Expert Comment

ID: 10665341
as i said this will also work for tie games

SELECT DISTINCT t1.gameid, t1.idteam, t2.idteam, t1.goalsinfavor, t1.[goals against]
FROM Games as t1
LEFT JOIN Games as t2 ON t1.GameID = t2.GameID and t1.idteam<>t2.idteam
WHERE t1.goalsinfavor >= t1.[goals against]

lars
0

LVL 1

Author Comment

ID: 10792932
with this query

SELECT distinct t1.gamesid, t1.idofteam, t2.idofteam, t1.goalsinfavor, t1.goalsagainst
FROM dbo.gameresults as t1    LEFT JOIN dbo.gameresults as t2 ON t1.GamesID = t2.GamesID and t1.idofteam<>t2.idofteam
WHERE t1.goalsinfavor >= t1.goalsagainst

i see results like this

gamesid  |   idofteam |   idofteam | goalsinfavor   |  goalsagainst |

230                5                  5                  3                     null

i would like to show different idofteam in the third column and i do not know why the goals against is not showing?

0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be \$37.1B.
This article shows gives you an overview on SQL Server 2016 row level security. You will also get to know the usages of row-level-security and how it works
This video shows, step by step, how to configure Oracle Heterogeneous Services via the Generic Gateway Agent in order to make a connection from an Oracle session and access a remote SQL Server database table.
Viewers will learn how the fundamental information of how to create a table.
###### Suggested Courses
Course of the Month6 days, 18 hours left to enroll