Solved

join two records

Posted on 2004-03-23
4
530 Views
Last Modified: 2011-09-20
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
Comment
Question by:gianitoo
  • 2
4 Comments
 
LVL 2

Assisted Solution

by:lschweer
lschweer earned 250 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

by:
cubical10 earned 250 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

by:lschweer
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

by:gianitoo
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?

please help
0

Featured Post

Free Gift Card with Acronis Backup Purchase!

Backup any data in any location: local and remote systems, physical and virtual servers, private and public clouds, Macs and PCs, tablets and mobile devices, & more! For limited time only, buy any Acronis backup products and get a FREE Amazon/Best Buy gift card worth up to $200!

Join & Write a Comment

Performance is the key factor for any successful data integration project, knowing the type of transformation that you’re using is the first step on optimizing the SSIS flow performance, by utilizing the correct transformation or the design alternat…
Introduction In my previous article (http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SSIS/A_9150-Loading-XML-Using-SSIS.html) I showed you how the XML Source component can be used to load XML files into a SQL Server database, us…
Via a live example, show how to setup several different housekeeping processes for a SQL Server.
Viewers will learn how to use the UPDATE and DELETE statements to change or remove existing data from their tables. Make a table: Update a specific column given a specific row using the UPDATE statement: Remove a set of values using the DELETE s…

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now