# UNION und DISTINCT



## Soapp (8. Oktober 2005)

Hab folgende Query

SELECT CHART, GASTVORNAME, GASTNACHNAME, NACHNAME FROM GUESTS
UNION
SELECT CHART, GASTVORNAME, GASTNACHNAME, NACHNAME FROM GUESTS2 WHERE TERMIN = 5 



In der Tabelle GUESTS 2 möchte ich aber alle Einträge in denen der GASTNACHNAME und der GASTVORNAME identisch sind nur einmal ausgeben
sprich: DISTINCT GASTVORNAME, GASTNACHNAME
Aus der Tabelle GUESTS sollen aber alle Zeilen angezeigt werden.

wie krieg ich das jetzt in die obere Query rein ? *rätsel*

danke danke danke 

Soapp


----------



## Gumbo (8. Oktober 2005)

Probier mal Folgendes:
	
	
	



```
SELECT
	`chart`,
	`gastvorname`,
	`gastnachname`,
	`nachname`
  FROM
	`guests`
  UNION DISTINCT
	SELECT
		`chart`,
		`gastvorname`,
		`gastnachname`,
		`nachname`
	  FROM
		`guest2`
	  WHERE
		`termin` = 5
```
Weitere Informationen findest du auf der englischen Referenzseite der UNION-Syntax.


----------



## Soapp (8. Oktober 2005)

Falls jemand grad Zeit hat ..............

Woher weiss MYSQL nun aber , welche Spalten sich auf das DISTINCT beziehen ?

Oder hab ich das mit DISTINCT falsch verstanden ?

Heisst das, dass alle Zeilen , in denen ALLE Spalten identisch sind zu einer zusammengefasst werden?

Oder kann ich auch sagen: fass nur alle Zeilen in denen GASTVORNAME und GASTNACHNAME identisch sind zu einer zeile zusammen

*GRÜBEL*

Danke


Beispiel:

GASTVORNAME   GASTNACHNAME   TERMIN   CHART

Merkel -------------------------Angela------------------5 -------------1
Merkel -------------------------Angela------------------5--------------2

Hier sollte er nur einmal die Merkel anzeigen .... 
geht das mit DISTINCT überhaupt ?


----------



## Gumbo (8. Oktober 2005)

DISTINCT kann meines Wissens vielseitig angewandt werden: Entweder um alle Attribute zur Auswahl von eindeutigen Datensätzen zu beachten (SELECT DISTINCT `column-1`, `column-2`, … `column-_n_` …) oder nur bestimmte Attribute (SELECT DISTINCT(`column-1`), `column-2`, … `column-_n_` …).


----------



## hpvw (9. Oktober 2005)

Alternativ kannst Du mit GROUP BY arbeiten. Da kannst Du auf jeden Fall explizit die Felder angeben.

Gruß hpvw


----------

