1

私は2つのテーブルを持っています:

matches TABLE
   FIELDS: record, date, competition

outrights TABLE
   FIELDS: record, competition

私が欲しいのは、さまざまな種類の競争によってグループ化された行を選択することです。以下は、各テーブルを個別に処理するときに正常に機能するステートメントです。

まず、「一致」から、日付がまだ過ぎていない場合のみ:

SELECT competition, date FROM matches WHERE date >= '$currentTime' GROUP BY competition

'outrights'からの行が続きます:

SELECT competition FROM outrights GROUP BY competition

これはすべて非常に簡単ですが、同じ競合値が両方のテーブルに表示されることがよくあります(常にではありません)。多くの異なる方法(LEFTおよびRIGHT JOINSを含む)を調べましたが、簡単な解決策は見つかりませんでした。基本的に、重複することなく、両方のテーブルに表示されるさまざまな種類の競争が必要です。これは可能ですか?

4

1 に答える 1

4

これはあなたが探しているものです。質問に少し混乱していますが、両方のテーブルから競合列の DISTINCT リストが必要なようです

SELECT DISTINCT competition 
FROM
(
    SELECT competition  FROM matches
    UNION
    SELECT competition from outrights
) AS t

一方または両方ではなく、両方のテーブルにのみ表示される個別の競技が必要な場合は、使用できます

SELECT DISTINCT competition 
FROM
(
    SELECT competition  FROM matches INNER JOIN 
        outrights ON matches.competition = outrights.competition
) AS t
于 2012-04-05T00:21:51.323 に答える