1

より複雑な (または私の頭でそう思う) SQL クエリで大きな問題が発生しています。何が必要かをできる限り説明しようと思います。

これは本質的にどのように見えるかです: http://i.imgur.com/obWY7.png

アイデアは、子供たちがプロとチームを組んでトーナメントを行うスポーツゲームがあるということです. スコア部分に到達するまで、すべてが正常に機能します。

winchildname、winproname、losechildname、loseproname の 4 つの列でゲームの結果を返すクエリが必要です。

このようにして、私の C# プロジェクトに簡単に表示できます。このクエリを使用する場合:

SELECT * FROM Games WHERE g_win = 1 OR g_lose = 1

これは、k_id 1 を持つ子によってプレイされたすべてのゲームを返しますが、結果は実際のテキストではなく int になります。1 int を内部結合してテキストにする方法は知っていますが、2 にはなりません。g_win と g_lose はどちらも子テーブルからの k_id であるためです。

ヒントを教えてくれる人はいますか?

4

1 に答える 1

1

テーブルにエイリアスを与えることで、同じテーブルに複数回参加できます。

WITH Names AS (
  SELECT k_id AS id, k_name, p_name
  FROM Child
  JOIN Pro ON k_pro = p_id
)
SELECT win.k_name AS win_k_name, win.p_name AS win_p_name, lose.k_name AS win_k_name, lose.p_name AS lose_p_name
FROM Games
JOIN Names AS win ON g_win = win.id
JOIN Names AS lose ON g_lose = lose.id
于 2012-05-26T12:55:14.610 に答える