# SELECT-Anweisung liefert keine Datensätze zurück



## Alex_winf01 (22. Jan 2008)

Folgende Select-Anweisung liefert keine Datensätze zurück, obwohl es Datensätze gibt, die die Kriterien erfüllen:


```
SELECT * from Tabelle 1, Tabelle 2 where Tabelle2.jahr <= 2008 AND Tabelle2.status = abgeschlossen
```

Es gibt keinerlei Foreigen-Keys zwischen den Tabellen. Ich möchte halt ALLE Werte der Tabelle 1 und alle Datensätze der Tabelle 2, wo das jahr <= 2008 und Status = abgeschlossen. 

Was mache ich da falsch?


----------



## Niki (22. Jan 2008)

eventuell abgeschlossen unter Hochkomma?




```
SELECT * from Tabelle 1, Tabelle 2 where Tabelle2.jahr <= 2008 AND Tabelle2.status = 'abgeschlossen'
```


----------



## Alex_winf01 (22. Jan 2008)

Funktioniert leider auch nicht.

Wenn ich nur sage 
	
	
	
	





```
SELECT * from Tabelle 2 where Tabelle2.jahr <= 2008 AND Tabelle2.status = 'abgeschlossen'
```
 bekomme ich den entsprechenden DS. Ich möchte aber auch gleichzeitig alle Werte aus der 1. Tabelle


----------



## Niki (22. Jan 2008)

Sind die Tabellen ident? Wenn ja kannst du auch mit union arbeiten. Ich kenne deine Tabellen leider nicht, daher ist eine Ferndiagnose etwas schwer


----------



## Alex_winf01 (22. Jan 2008)

Also in Tabell 1 steht:

Name
Vorname
Strasse
PLZ
Ort

In Tabelle 2 steht:

Fall-Nummer
Feld 1
Feld 2
Feld 3
Feld 4
Feld 5
Feld 6
Feld 7
Feld8

Es gibt KEINE gemeinsame Spalte, sonst hätte sich ein JOIN angeboten.

EDIT: UNION funzt nicht, weil Tabelle 2 mehr Spalten hat wie Tabelle 1


----------



## Niki (22. Jan 2008)

Ich versteh nicht ganz warum du Tabellen die keine Verbindung haben gemeinsam als Ergebnis willst. Wenn die Spaltentypen ident sind kannst du folgendes machen:

```
select vorname, nachname
  from tabelle1
union
select feld1, feld2
  from tabelle2
```

Keine Ahnung ob dir das was hilft


----------



## Alex_winf01 (22. Jan 2008)

@ Niki

Brauche es für einen Export. Mit Deinem Beispiel habe ich es versucht. Funzt leider nicht.


----------



## *Hendrik (22. Jan 2008)

Wenn Du dafür



			
				Alex_winf01 hat gesagt.:
			
		

> Funktioniert leider auch nicht.
> 
> Wenn ich nur sage
> 
> ...



einen DS bekommst, aber hier:
	
	
	
	





```
SELECT * from Tabelle 1, Tabelle 2 where Tabelle2.jahr <= 2008 AND Tabelle2.status = 'abgeschlossen'
```
nicht, dann könnte es sein, dass Tabelle 1 leer oder der Name für Tabelle 1 nicht korrekt angegeben ist (0 Datensätze für Tabelle 1 * X Datensätze für Tabelle 2 = 0 Datensätze als Ergebnis).

Das hier kannst Du auch probieren:


```
SELECT * FROM Tabelle1,(select * from Tabelle1 where usw.)TabelleErgebnis2;
```

Ist aber im Grunde das Gleiche wie die oberste Select-Anweisung.


----------



## André Uhres (23. Jan 2008)

*Hendrik hat gesagt.:
			
		

> 0 Datensätze für Tabelle 1 * X Datensätze für Tabelle 2 = 0 Datensätze als Ergebnis


Dem stimme ich voll und ganz zu. Dein ursprünglicher select müsste im Prinzip funktionieren.
Aber nehmen wir jetzt mal an, die Tabelle 1 hätte 10 Datensätze und Tabelle 2 hätte 3 Datensätze die den Kriterien entsprechen:
10 Datensätze für Tabelle 1 * 3 Datensätze für Tabelle 2 = 30 Datensätze als Ergebnis
dann hättest du also im Ergebnis jeden Datensatz aus Tabelle 1 drei mal.
Ist das wirklich, was du willst?


----------



## Alex_winf01 (23. Jan 2008)

@ André Uhres

Ja, das ist einfach als Kontrolle so vom Kunden gewollt. Habs jetzt auch gesehen, dass ich in meiner 1. Tabelle keine Daten drinn hatte.  

Peinlich.


----------

