2017-02-08 1 views
0

Ich habe 3 Tabellen fasst, dass ichAnsicht erstellen, wählen Sie min und wählen Sie max der Kindertisch

Kommission Tabelle zu einer Ansicht anschließen möchte:

idCommission: int 
name:   varchar 
... 

Jahreszeit:

idSeason:  int 
since:  date 
till:   date 

Seasons_in_commission:

idCommission: int 
idSeason:  int 

R eiter Ansicht:

idCommission: int | ID for referencing 
Commission.*   | All other from Commission table 
since:  date | Min of all its (from) seasons 
till:   date | Max of all its (till) seasons 
seasons:  int | Count of its seasons 

Ich habe versucht, aber ich fand, dass ich Zeile für Zeile verweisen müssen in den Unterabfragen, dass ich weiß nicht, wie zu tun ist.

SELECT Commission.*, 
MIN(
    SELECT since FROM Seasons_in_commission 
    JOIN Season USING(idSeason) 
    WHERE idCommission = currentRow.idCommission /*<- this part is wrong */ 
) as Since, MAX(...) as Till, COUNT(...) as Seasons FROM Commission 

Antwort

1

Ich glaube nicht, dass Sie irgendwelche Unterabfragen benötigen. Versuchen Sie folgendes:

SELECT Commission.*, MIN(since) AS Since, MAX(till) AS Till, COUNT(*) AS Seasons 
    FROM Commission 
    JOIN Seasons_in_commission USING (idCommission) 
    JOIN Season USING (idSeason) 
GROUP BY idCommission; 

(Beachten Sie, dass dies nur mit ONLY_FULL_GROUP_BY Behinderten arbeiten.)

+0

Die Zählung funktioniert, aber die von seiner ersten Saison genommen Termine auf. Kein min oder max done – Akxe

+0

@Akxe Ich kann nicht weiter ohne einige tatsächliche Daten helfen. Wenn Sie eine [SQL Fiddle] (http://sqlfiddle.com/) Datenbank einrichten könnten, wäre das eine große Hilfe. – shmosel

+0

Ich habe eine erstellt: http://sqlfiddle.com/#!9/7d91e3 – Akxe

Verwandte Themen