# Mit 2 Queries ein Objekt erstellen



## skuki (9. Sep 2015)

Hallo, 

ich benötige für ein Objekt zwei Queries da sie aus unterschiedlichen Tabellen kommen. JOIN's würde nicht funktionieren da ich die Daten von verschiedenen Tagen benötige und ich das Datum als Where-Bedingung verwende.

Das Objekt wird in dieser Schleife erzeugt:

```
PreparedStatement pt = con.prepareStatement("SELECT .....");

ResultSet resultSet = pt.executeQuery();

while(resultSet.next()){

// erzeuge Objekte

}
```

Jetzt die Frage: Bekomme ich mein zweites Query irgendwie in diese Schleife? Kennt jemand eine andere Methode hierfür? 

Wäre für jeden Tipp dankbar!


----------



## Thallius (9. Sep 2015)

Warum soll das nicht mit JOIN gehen. Du kannst doch in der WHERE Klausel beliebig mit und und oder arbeiten.


----------



## skuki (9. Sep 2015)

Hmm ich stelle mir das kompliziert vor. 

Es geht um die Berechnung für einen Sportpark. 
Für das Objekt Benutzer benötige ich Informationen vom aktuellen Tag. Für die genauere Preisberechnung benötige ich aber auch Informationen der anderen Tabelle des gestrigen Tages.

Ohne denke ich hier zu kompliziert? 

Lg


----------



## Thallius (9. Sep 2015)

Ich müsste schon ein wenig genauer wissen was du Abfragen willst. Aber es ist extrem selten, dass man eine Abfrage nicht mit einem query erschlagen kann. Sql ist schon verdammt mächtig


----------



## skuki (9. Sep 2015)

Denke ich mir auch, leider bin ich da noch nicht so bewandert...

Es läuft wie folgt ab. 

Ich berechne den Preis für ein Tagesticket mit mehreren Parametern die ich mir in zwei Teilen hole. 

1. die Daten des heutigen Tages. Ich Joine 3 Tabellen des aktuellen Tages (steht im WHERE Teil). 2. Zusätzlich dazu benötige ich das Ergebnis des letzten Tages für Folgetickets. Hierzu benötige ich meiner Meinung nach eine zweite Abfrage da ich hier vom vorherigen Tag Daten benötige.


----------



## stg (10. Sep 2015)

So wirklich klar ist es immer noch nicht, was und wie du abfragen willst, dafür müssten wir das Model kennen.

Allerdings kannst du in SQL problemlos mit Datumsens "rechnen". Schau dir dazu einfach mal an, was für Date Functions das DBS deiner Wahl bereit stellt. 

Deine Aussage "XYZ geht nicht, weil ich das Datum als Where-Bedingung verwende." solltest du grundlegend überdenken. Wenn es so, wie du es machst, nicht geht, dann solltest du gegebenfalls deine Query anpassen.

Ungeachtet all dessen: Eventuell kommt ja auch eine PL/SQL Procedure für dich in Frage, so dass du die gesamte Preisberechnung auf die Datenbank auslagern kannst?!


----------



## Thallius (10. Sep 2015)

Im schlimmsten aller Fälle kannst du das Ergebnis des Vorherigen Tages immer noch mit einem Subselect ermitteln. Aber ich bin sicher es geht auch eleganter. Aber wie stg schon schrieb. Dazu müßte man das genau Modell kennen.


----------

