Hej, Det fattas ett villkor på serieID i dina sub-querys [Select Count(gameId)....] Bättre eller sämmre ? helt ärligt så hjälper inte snälla... Det du kan göra för att förbättra dina chanser för att få svar är att formulera din fråga på ett bra sätt. När jag öppnade denna tråden igår så såg jag din sql-sats i första inlägget och min enda tanken var "Har han inte ens bemödat sig med att formatera SQL satsen så att den går enkelt och snabbt att läsa så skiter jag i dettta. Nästa tråd.... ". Vill du få bra svar skall du bemöda dig med att ställa bra frågor som är lätta att ta till sig och förstå, inte en SQL som ser ut som en enda röra... Carl, Monster SQL:sql problem
Håller på med att tabell script till ett fotbolls lag, men har gåt in i väggen med sql frågan.
Här kan ni se mina tabeller i DB:
http://www.holmssportklubb.com/temp/sql.gif
Som ni ser kan man ha olika serier. Och med min sql sats får jag fram en tabell, men man får med alla matcher från alla serier så antal matcher och poäng stämer ju inte . . .
Alltså WIN, DRAW och LOST stämer inte
SQL q_Table i DB ( Access ):
<code> SELECT tbl_Team.teamId, tbl_Team.teamHeadline, (Select Count(gameId) from tbl_Games where (gameTeamHomeScoore>gameTeamAwayScoore AND gameTeamHome=tbl_Team.teamId) or (gameTeamHomeScoore<gameTeamAwayScoore AND gameTeamAway=tbl_Team.teamId)) AS Win, (Select Count(gameId) from tbl_Games where gameTeamHomeScoore=gameTeamAwayScoore AND (gameTeamHome=tbl_Team.teamId or gameTeamAway=tbl_Team.teamId)) AS Draw, (Select Count(gameId) from tbl_Games where (gameTeamHomeScoore<gameTeamAwayScoore AND gameTeamHome=tbl_Team.teamId) or (gameTeamHomeScoore>gameTeamAwayScoore AND gameTeamAway=tbl_Team.teamId) ) AS Lost, tbl_Games.SerieId
FROM tbl_Team, tbl_Serie INNER JOIN tbl_Games ON tbl_Serie.serieId = tbl_Games.SerieId
WHERE (((tbl_Team.teamId)=[tbl_Games].[gameTeamHome] Or (tbl_Team.teamId)=[tbl_Games].[gameTeamAway]))
GROUP BY tbl_Team.teamId, tbl_Team.teamHeadline, tbl_Games.SerieId, tbl_Team.teamId;</code>
Och sedan på sidan:
strSerieId = Request.Querystring("id")
<code> SELECT * FROM q_Table WHERE serieId = " & strSerieId & " ORDER BY ( 3 * Win + Draw) DESC"</code>Sv: sql problem
Du måste villkora på in-parameter @serieId, annars får du resultatet för alla serier.
Mer info om parametrar:
http://www.webconcerns.co.uk/asp/accessqueries/accessqueries.asp
Sen kan jag inte garantera att den fungerar med detta är en bra början.. :)Sv: sql problem
<code>
SELECT tbl_Games.serieId, tbl_Team.teamId, tbl_Team.teamHeadline, (Select Count(gameId) from tbl_Games where tbl_Games.serieId = @serieId AND (gameTeamHomeScoore>gameTeamAwayScoore AND gameTeamHome=tbl_Team.teamId) or (gameTeamHomeScoore<gameTeamAwayScoore AND gameTeamAway=tbl_Team.teamId)) AS Win, (Select Count(gameId) from tbl_Games where tbl_Games.serieId = @serieId AND gameTeamHomeScoore=gameTeamAwayScoore AND (gameTeamHome=tbl_Team.teamId or gameTeamAway=tbl_Team.teamId)) AS Draw, (Select Count(gameId) from tbl_Games where tbl_Games.serieId = @serieId AND (gameTeamHomeScoore<gameTeamAwayScoore AND gameTeamHome=tbl_Team.teamId) or (gameTeamHomeScoore>gameTeamAwayScoore AND gameTeamAway=tbl_Team.teamId) ) AS Lost
FROM tbl_Team, tbl_Serie INNER JOIN tbl_Games ON tbl_Serie.serieId = tbl_Games.serieId
WHERE (((tbl_Games.serieId)=[@serieId]) AND ((tbl_Team.teamId)=[tbl_Games].[gameTeamHome] Or (tbl_Team.teamId)=[tbl_Games].[gameTeamAway]))
GROUP BY tbl_Games.serieId, tbl_Team.teamId, tbl_Team.teamHeadline;
</code>
Men hur gör jag på sidan ?
<code>
strSQL = ""
strSQL = strSQL & "SELECT "
strSQL = strSQL & " *"
strSQL = strSQL & " FROM q_Table"
strSQL = strSQL & " WHERE tbl_Game.serieId = " & strSerieId & " ORDER BY ( 3 * Win + Draw) DESC"
</code>
för att skicka med en parameter ?Sv: sql problem
Hursomhelst så råkade jag ändå titta på det. Testa det nedan och kolla om det verkar ge rätt svar som du förväntar dig på oavgjorda matcher. Lägg även till relationer mellan tbl_team och tbl_games, i bilden har du inte det så jag antar att det inte finns i databasen heller?
<code>
SELECT
G1.serieId,
T1.teamId,
T1.teamHeadline,
(
SELECT Count(game.gameId)
FROM tbl_Games game
WHERE game.gameTeamHomeScoore = game.gameTeamAwayScoore
AND (game.gameTeamHome = T!.teamId OR game.gameTeamAway=T1.teamId)
AND G1.serieId = game.serieId
) AS draw
FROM tbl_Team as T1, tbl_Games as G1
WHERE G1.gameTeamHome = T1.teamid
OR G1.gameTeamAway = T1.teamid
</code>
namnstandard suger, gjort bara för att illustrera....Sv: sql problem
På länken jag postade förut står det utförligt hur du ska göra på asp-sidan med parametrar!Sv: sql problem
SELECT gameTeam, tbl_Team.teamHeadline, Statistics.Won, Statistics.Draw, Statistics.Lost
FROM (
SELECT SerieId, gameTeam, -Sum(Statistics.Won) AS Won, -Sum(Statistics.Draw) AS Draw, -Sum(Statistics.Lost) AS Lost
FROM (
SELECT SerieId,
gameTeamHome AS gameTeam,
gameTeamHomeScoore>gameTeamAwayScoore AS Won,
gameTeamHomeScoore=gameTeamAwayScoore AS Draw,
gameTeamHomeScoore<gameTeamAwayScoore AS Lost
FROM tbl_Games
WHERE serieId = @SerieId
UNION ALL
SELECT SerieId,
gameTeamAway AS gameTeam,
gameTeamAwayScoore>gameTeamHomeScoore AS Won,
gameTeamAwayScoore=gameTeamHomeScoore AS Draw,
gameTeamAwayScoore<gameTeamHomeScoore AS Lost
FROM tbl_Games) AS Statistics
WHERE serieId = @SerieId
GROUP BY SerieId, gameTeam) AS Statistics INNER JOIN
tbl_Team ON Statistics.gameTeam = tbl_Team.teamId
ORDER BY ( 3 * Win + Draw) DESC