# Query aus Querys



## stetabar (16. Aug 2007)

Hallo zusammen,

mal ne kurze frage.

wenn ich 3 querys erzeuge, wobei 2 davon als grundlage für die 3te dient, wie kann ich sowas mit java umsetzen?

Beispiel:

query1 wird angewendet auf tab1 & tab2
query2 wird angewendet auf tab 3 & tab4
query3 bezieht sich auf query1 & query2

Bin mir da nicht so sicher, wie das geht.

bei access zB erzeugt man einfach die abfragen(querys) und kann dann bei späteren abfragen(querys) einfach drauf zugreifen...

wäre schön, wenn da jemand ne lösung oder n gutes tut hätte.

danke


----------



## SlaterB (16. Aug 2007)

http://sql-und-xml.de/sql-tutorial/subqueries-unterabfragen.html


----------



## stetabar (16. Aug 2007)

erstmal danke!

und diese syntax mit query1(query2<query3) kann ich problemlos in java nutzen?


----------



## SlaterB (16. Aug 2007)

ne, das ist ein SQL-Thema, das wird in einer DB gemacht,

Access ist vielleicht noch ein höheres Programm als die Standard-DB und mag durchaus Features haben, die nicht in jeder DB vorhanden sind,
in Java dann sowieso nix, Java/ JDBC bietet standardmäßig nichts außer 'SQL-Query x durchführen'

spezielle Libaries für dein Problem kann ich dir nicht nennen, ich weiß nicht mal genau was du da meinst


----------



## stetabar (16. Aug 2007)

könntest du mir vielleicht sagen, wie ich in mySQL Querys erzeuge???


----------



## SlaterB (16. Aug 2007)

einfach eintippen in die mySQL-Konsole:
select * from table;


----------



## stetabar (16. Aug 2007)

aber die bleiben doch dann nicht statisch verfügbar, oder?

also ich kann nicht

QUERY1 = SELECT * FROM table

in der Konsole anlegen und mit JAVA dann einen SELECT * FROM QUERY1 machen, oder?


----------



## SlaterB (16. Aug 2007)

nö, dafür gibst zum einen Views, zum anderen vielleicht noch Stored Procedures,
siehe google


----------



## stetabar (16. Aug 2007)

gerade schon was zu stored procedures gesehen und mit entsetzen festgestellt, dass es das erst ab ver.5 gibt...
habe wegen nem typo3 system aber ne v4.XX installiert...

also pech gehabt???


----------



## SlaterB (16. Aug 2007)

(ich persönlich kann dazu nix sagen)


----------



## stetabar (16. Aug 2007)

alles klar. trotzdem besten dank!


----------



## FenchelT (16. Aug 2007)

Hallo,

StoredProc? Warum versuchst Du das nicht so, wie man Dir bereits geraten hat, mit Subqueries


SELECT temp1.feld1, temp2, feld1, usw
FROM (SELECT feld_1, feld_2, feld_n FROM tab1 INNER JOIN tab2 ON tab1.id = tab2.id) as temp1
INNER JOIN (SELECT feld_1, feld_2, feld_n FROM tab3 INNER JOIN tab4 ON tab3.id = tab4.id) as temp2
ON temp1.id = temp2.id

Nunja, habe kein mySQL muesstest Du zur Not noch im Tutorial nachschlagen und ggfls. anpassen.
Bei MSSQL laeuft es allerdings.

Noch zwei Dinge
1. Was die Datenbank machen kann, lass die Datenbank machen

2. Wenn es sich um eine groessere Datenmenge handelt, bzw wenn Du den SQL in einer Appl.benutzt schreibe die Felder aus und verzichte auf SELECT *.
- Ein SELECT * kann zwangslaeufig keine Indizes benutzen, was sich bei groesseren Datenmengen sehr bemerkbar macht

- Du selektierst Datenmengen, die DU unter Umstaenden nocht benoetigst, was Deine Abfrage auch langsamer macht.

- Wenn Du in einer Applk. Select *  benutzt und dann z.B. mittels .getString(4) auf das 4 vierte Feld zugreifst, dann ist das vierte Feld heute das vierte Feld.
Wenn die Tabelle aber geaendert wird und an 4. Stelle ein neues Feld eingefuegt wird, erhaelst DU aufeinmal einen Wert aus einem Feld, das Du gar nicht meinst.


Viel Erfolg
FenchelT


----------



## stetabar (16. Aug 2007)

Danke für die Tipps FenchelT.

Bin gerade dabei das Ganze etwas anzupassen und umzusetzen...


----------



## ms (17. Aug 2007)

stetabar hat gesagt.:
			
		

> gerade schon was zu stored procedures gesehen und mit entsetzen festgestellt, dass es das erst ab ver.5 gibt...
> habe wegen nem typo3 system aber ne v4.XX installiert...
> 
> also pech gehabt???



Das ist der Grund warum viele Leute (auch ich) mySql nicht als vollwertige Datenbank ansehen bzw. angesehen haben.


----------



## stetabar (17. Aug 2007)

darum setze ich das system gerade auf postgresql um, aber da scheiter ich an der verbindung...


----------

