-2

2 つのチーム間のサッカーの試合結果を含むテーブルがあります。まず、チームのドロップダウン メニューが必要です。これは単純に SELECT * FROM table GROUP BY Team_A のようなものにする必要があります

ただし、チームが Team_B 列にしか表示されない場合は、チームを見逃す可能性があります。列 Team_A と Team_B をグループ化して、両方の列ですべての一意のチームを出力できるようにすることはできますか?

4

4 に答える 4

0

あなたはただの意味ではありません:

group by Team_A, Team_B

?

これは、Team_A と Team_B の組み合わせによってグループ化されます

編集: 2 つの列で終了するには、それぞれがその列に既に存在するチームの一意のリストを持ちます (正確に OP で説明されているとおり):

SELECT a.*, b.* FROM
(SELECT Team_A, @ida := ifnull(@ida,0) + 1 AS ida FROM table GROUP BY Team_A) AS a
LEFT JOIN
(SELECT Team_B, @idb := ifnull(@idb,0) + 1 AS idb FROM table GROUP BY Team_B) AS b
ON a.ida=b.idb
and isnull(@ida := null) and isnull(@idb := null) -- reset @ida and @idb

UNION ALL -- turn the left and right join into full outer join

SELECT c.*, d.* FROM
(SELECT Team_A, @idc := ifnull(@idc,0) + 1 AS idc FROM table GROUP BY Team_A) AS c
RIGHT JOIN
(SELECT Team_B, @idd := ifnull(@idd,0) + 1 AS idd FROM table GROUP BY Team_B) AS d
ON c.idc=d.idd
and isnull(@idc := null) and isnull(@idd := null) -- reset @idc and @idd
WHERE c.idc is null -- prevent doubles in the full outer join
于 2013-06-04T13:19:31.570 に答える