2012-04-05 5 views
1

Ich habe 2 Tabellen:Was ist der beste Weg, um 2 Tabellen in MYSQL zu kombinieren und Duplikate zu entfernen?

matches TABLE 
    FIELDS: record, date, competition 

outrights TABLE 
    FIELDS: record, competition 

Was ich möchte, Zeilen ist durch die verschiedenen Arten von Wettbewerb gruppiert auszuwählen. Im Folgenden sind die Aussagen, die gut funktionieren, wenn ich jeden Tisch getrennt behandle.

Zum einen, von 'Treffern' und nur, wenn das Datum Vergangenheit nicht schon hat:

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

Gefolgt von Zeilen von 'Outrights':

SELECT competition FROM outrights GROUP BY competition 

Das alles nach vorne ziemlich gerade ist, außer dass die gleichen Wettkampfwerte oft (aber nicht immer) in beiden Tabellen erscheinen. Ich habe mir viele verschiedene Methoden angesehen (einschließlich LEFT und RIGHT JOINS), habe aber keine einfache Lösung gefunden. Grundsätzlich möchte ich die verschiedenen Wettkampftypen, die in beiden Tabellen erscheinen, ohne zu duplizieren. Ist das möglich?

Antwort

4

Ist das wonach Sie suchen? Ein wenig von der Frage verwirrt, aber es scheint, dass Sie eine DISTINCT Auflistung der Wettbewerb Spalte aus beiden Tabellen

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

möchten Wenn Sie die unterschiedlichen Wettbewerbe müssen, die nur in den beiden Tabellen erscheinen und nicht nur ein oder beide könnten Sie verwenden

SELECT DISTINCT competition 
FROM 
(
    SELECT competition FROM matches INNER JOIN 
     outrights ON matches.competition = outrights.competition 
) AS t 
+0

Sie haben es Dan getan, obwohl meine Antwort Sie verwirrt! Danke, dass du mir frustrierende Stunden gerettet hast. – user1267980

Verwandte Themen