# SQL Abfrage funktioniert mit Access aber nicht mit mysql



## Test (26. April 2007)

Hallo,
ich habe eine Accessdatenbank mit den 2 Tabellen "Tabelle1" und "Tabelle2". Diese besitzen jeweils ein Attribut für eine Datumsangabe ("Datum1" bei Tabelle1 und "Datum2" bei Tabelle2) sowie eine Attribut für eine ID (Name ist bei beiden Tabellen "ID).

Die Datumswerte können sowohl innerhalb einer Tabelle als auch in der anderen Tabelle mehrfach vorkommen. Um mir nun alle eingetragenen Datumswerte ohne Duplikate anzeigen zu lassen kann ich unter Access folgende SQL Abfrage verwenden:


```
SELECT Tabelle1.Datum1 as Dates
FROM Tabelle1
UNION
SELECT  Tabelle2.Datum2 as Dates
FROM  Tabelle2 ORDER BY Dates DESC;
```

Die gleiche Struktur habe ich nun in mySQL (3.23) nachgebaut und wollte nun über die selbe SQL-Abfrage eigentlich das gleiche Ergebnis wie unter Access erhalten. Leider erhalte ich aber vom phpmyadmin die Meldung "#1064 - Fehler in der Syntax bei 'UNION  SELECT Tabelle2 . Datum2 as Dates  FROM Tabelle2 ORDER BY' in Zeile 1. "

Weiß jemand warum es hier nicht funktioniert bzw. was ich ändern muss um das selbe Ergebnis zu erhalten?

Danke im Voraus


----------



## hikeda_ya (26. April 2007)

versuchs mal so


```
SELECT Tabelle1.Datum1 as Dates
FROM Tabelle1
where Datum1 in 
SELECT  Tabelle2.Datum2 as Dates
FROM  Tabelle2 ORDER BY Dates DESC;
```


----------



## Test (4. Mai 2007)

Mit deiner Version erhalte ich  "#1064 - Fehler in der Syntax bei 'SELECT Tabelle2 . Datum2 as Dates  FROM Tabelle2 ORDER BY Dates ' in Zeile 1. "


----------



## jeipack (4. Mai 2007)

Hi
Dann versuchs mal so 

```
select tbl1.datum1 from tabelle1 as tbl1
inner join tabelle2 as tbl2 on tbl2.datum2=tbl1.datum1
order by tbl1.datum1 desc;
```
es werden alle tbl1.datum1 angezeigt, die auch in tbl2.datum2 vorkommen


----------



## Test (7. Mai 2007)

Diese Abfrage funktioniert zwar aber liefert nicht das Ergebnis welches ich brauche. Hier mal ein Beispiel:

Tabelle1:
Datum1  ID  
2007-04-26 0 
2007-04-27 2 
2007-04-27 1 
2007-04-29 1 
2007-04-29 3

Tabelle2:
Datum2  ID  
2007-04-03 1 
2007-04-29 2 
2007-04-27 3 
2007-04-30 4 

Als Ergebnis soll nun nur:

2007-04-03
2007-04-26
2007-04-27
2007-04-29
2007-04-30

rauskommen.


----------



## Biber2 (7. Mai 2007)

Moin Test,

zwei schnelle Versuche schlage ich noch vor:

1) die Selects in Klammern setzen

```
( SELECT Tabelle1.Datum1 as Dates FROM Tabelle1)
UNION
(SELECT  Tabelle2.Datum2 as Dates
FROM  Tabelle2)
 ORDER BY Dates DESC;
```

2) und optional das AS  ... im zweiten SELECT weglassen:

```
(SELECT Tabelle1.Datum1 as Dates
FROM Tabelle1)
UNION
(SELECT  Tabelle2.Datum2 
FROM  Tabelle2)
ORDER BY Dates DESC;
```

Gruss
Biber2


----------



## Test (8. Mai 2007)

Schade auch das bringt nur Syntaxfehler, naja dann muss ich es halt über 2 Listen und mit php sortieren/löschen. 

Trotzdem Danke an euch alle.


----------



## lmarkus31 (8. Mai 2007)

Hallo,

UNION geht erst ab Version 4.0:

http://dev.mysql.com/doc/refman/4.1/en/select.html

Markus


----------

