# MySQL-Abfrage unter java funktioniert nicht!



## SepplVonDerAlm (1. Okt 2005)

Hallo, ich hoffe ich bin im richtigen forum...

was ist an dieser MySQL abfrage falsch:

SELECT artikelid FROM artikelgroesse WHERE artikelid = 1 AND groesseid  = (SELECT groesseid FROM groesse WHERE groessenbezeichnung ='5');

Einzeln funktionieren die abfragen, aber geht das vielleicht bei MySQL nicht mit geschachtelten Abfragen?

Ich hoffe ihr könnt mir helfen...

Gruß Seppl


----------



## Bleiglanz (1. Okt 2005)

ja,

Subselects gibts in MySQL (noch) nicht, also einen Join verwenden

[edit]totaler Quatsch, gibts sei fast 2 Jahren - ab 4.1![/edit]


----------



## Guest (1. Okt 2005)

Bleiglanz hat gesagt.:
			
		

> ja,
> 
> Subselects gibts in MySQL (noch) nicht, also einen Join verwenden



hmm damit hab ich leider noch absolut null erfahrung, kannst mir vielleicht sagen wie dieses statement mit einem Join aussehen würde?

Danke schonmal


----------



## Bleiglanz (1. Okt 2005)

SELECT artikelid FROM artikelgroesse a, groesse g

WHERE 
a.groesseid = g.groessenid
a.artikelid = 1 
g.groessenbezeichnung='5'


----------



## bronks (2. Okt 2005)

SepplVonDerAlm hat gesagt.:
			
		

> ... SELECT artikelid FROM artikelgroesse WHERE artikelid = 1 AND groesseid  = (SELECT groesseid FROM groesse WHERE groessenbezeichnung ='5');


Grundsätzlich funktioniert das schon, aber nicht so, wie Du es dort oben schreibst. Wenn Du 'groesseid' mit einer Liste vergleichst, dann darfst Du keinen '=' verwenden, sondern ein "in select". Das funktioniert aber m.E. nur auf ein paar SQL-Dialekten, aber mit sicherheit nicht mit MySql.

Ich würde es so machen, weil es viele Datenbanken problemlos verstehen werden und von der Performance kommt es aufs gleiche:

```
Select artikelid from
artikelgroesse inner join
(SELECT groesseid FROM groesse WHERE groessenbezeichnung ='5') as groessentabelle
on artikelgroesse.groesseeid = groessentabelle.groesseid
```

Noch interessant dazu eine ältere Diskussion: http://www.php.de/forum/viewtopic.php?t=27064&highlight=subselect


----------

