2012-04-05 17 views
0

Ich versuche, eine Abfrage für SQL CompactSql - Wie diese Abfrage machen

Es ist im Grunde diese Abfragen zu machen, aber ich hatte gehofft, dass ich sie in eine kombinieren könnte.

1.

SELECT schoolId,opponent 
FROM TEAM_SCHEDULE 
WHERE seasonId = " & i & " 
AND gameid = " & currentGame & " 
ORDER BY id" 

These are variables, trying to eliminate them at some point 
currentMatch(0) = schoolId 
currentMatch(1) = opponent 

2.

SELECT id 
FROM player 
WHERE school = " & currentMatch(0) & " 
AND starter = 'TRUE' 
AND game_id = " & currentGame & " 
ORDER BY weight 

3.

SELECT id 
FROM player 
WHERE school = " & currentMatch(1) & " 
AND starter = 'TRUE' 
AND game_id = " & currentGame & " 
ORDER BY weight 

Ich dachte ich so etwas tun könnte, aber ich lief in ein Problem zu Figur versuchen heraus, wie Sie die beiden Schulen zur Abfrage hinzufügen.

 cmd.CommandText = "SELECT b.id, player.id" & 
          " FROM player b" & 
          " WHERE player.school = " & currentMatch(0) & 
          " OR player.school = " & currentMatch(1) & 
          " INNER JOIN player" & 
          " ON b.weight = player.weight" & 
          " ORDER BY player.weight" 

hoffentlich Um Verwechslungen zu klären, ich versuche zu:

  1. Select 2 Schulen (int) aus team_schedule, schoolId und Gegner.
  2. Wählen Sie alle Starter ('True') bei jedem Gewicht von diesen beiden Schulen.
  3. Koppeln Sie die Starter von jeder Schule nach Gewicht.
  4. Sie können jedes Paar auswählen und die Daten bearbeiten.

Schätzen Sie jede Hilfe!

Dies ist der Parsing-Fehler aus der Abfrage Nikola, Error

+0

Argh !! String Verkettung für SQL-Werte wie das ist böse. –

+0

Heh, am wichtigsten versuche ich, meine Sachen zur Arbeit zu bringen. Ich habe vorher versucht, Parameter einzustellen, aber ich hatte kein Glück. Ich werde es noch einmal versuchen, sobald ich das verstanden habe. – Meowbits

Antwort

1

Diese Abfrage sein könnte. Sie können dieselbe Tabelle mehr als einmal angeben, aber Sie müssen jedem einen anderen Alias ​​zuweisen. In diesem Fall wird der Spieler zweimal als p1 und p2 aufgelistet. Das Match auf Spielergewichtungen wird auch im Join-Teil durchgeführt, aber möglicherweise in Where-Klausel.

SELECT 
    schoolId, 
    opponent, 
    p1.id Player1, 
    p1.Weight Player1Weight, 
    p2.id Player2, 
    p2.Weight Player2Weight 
FROM TEAM_SCHEDULE 
inner join player p1 
    on TEAM_SCHEDULE.schoolId = p1.school 
and TEAM_SCHEDULE.GameID = p1.Game_id 
AND p1.starter = 'TRUE' 
inner join player p2 
    on TEAM_SCHEDULE.opponent = p2.school 
    and TEAM_SCHEDULE.GameID = p2.Game_id 
    AND p2.starter = 'TRUE' 
-- tricky part - do weights match perfectly 
-- or do you need additional weight range table? 
    AND p1.weight = p2.weight 
WHERE TEAM_SCHEDULE.seasonId = " & i & " 
AND TEAM_SCHEDULE.gameid = " & currentGame & " 
ORDER BY id 
+0

Danke für die Antwort! Leider habe ich einen Parsing-Fehler, wenn ich versuche, diese Abfrage zu verwenden "on ** TEAM_SCHEDULE **. SchoolId = p1.school" Dies könnte eine Einschränkung von sql compact sein, nicht sicher. – Meowbits

+0

@Meowbits was der Fehler sagt? Ich sehe hier keinen offensichtlichen Fehler. –

+0

Entschuldigung, ich habe meine ursprüngliche Frage aktualisiert, um den Fehler anzuzeigen. – Meowbits