Access Abfrage mit zwei Tabellen

martenk

Grünschnabel
Hallo

habe leider einen Thread zu früh als gelöst gekennzeichnet

das war meine Frage
meine Tabelle Reservierungen sieht so aus

id_Objekt_Anreise_Abreise_Miete ....
1__A2_____01.02.2021_07.02.2021___350
2__A3_____02.02.2021_06.02.2021___150
3__A2_____02.02.2021_03.02.2021___50
4__A2_____15.02.2021_26.02.2021___500
5__A3_____08.02.2021_12.02.2021___300
...

jetzt gebe ich im HF z.b. den Bereich ein 01.01. - 03.03.

so hatte ich es probiert
Code:
SELECT Reservierungen.[Objekt-Nr], Sum(Reservierungen.Miete) AS SummevonMiete, Sum(Anreisetag-Abreisetag) AS days
FROM Reservierungen
WHERE (((Reservierungen.Anreisetag)>=[Formulare]![Statistik]![von] And (Reservierungen.Anreisetag)<=[Formulare]![Statistik]![bis]))
GROUP BY Reservierungen.[Objekt-Nr];

nun soll die Abfrage dann so aussehen
Objekt___Miete____Tage
A2_______900______18
A3_______550______8

nun ist es wie folgt - ich bekomme die korrekte Abfrage angezeigt - um die Auslastung eines Objektes berechnen zu können, brauche ich aber noch die Tage, die ein einzelnes Objekt vermietet werden kann - dafür habe ich eine Tabelle Objekte -

id_Objekt__AnzahlTage.....
1_A2______200
2_A3______320
....
könnt ihr mir beschreiben, wie ich die jeweilige "AnzahlTage" aus der Tab Objekte in die jeweilige Zeile der Abfrage bekomme
 
Zuletzt bearbeitet:
ja und da hapert es leider bei mir - hatte ich auch schon gefunden, weiss nur nicht, wie ich das machen soll mit der Zuweisung
 
SQL:
SELECT 
    r.[Objekt-Nr], 
    SUM(r.Miete) AS SummevonMiete, 
    Sum(Anreisetag-Abreisetag) AS days,
    days - o.AnzahlTage AS freieTage
FROM 
    Reservierungen AS r
    INNER JOIN my_other_table AS o
        ON r.[Objekt-Nr] = o.[Objekt-Nr]
WHERE 
    r.Anreisetag >= [Formulare]![Statistik]![von] 
    And r.Anreisetag <= [Formulare]![Statistik]![bis]
GROUP BY 
    r.[Objekt-Nr];
 
Code:
SELECT r.[Objekt-Nr], Sum(r.Miete) AS SummevonMiete, Sum(Anreisetag-Abreisetag) AS days, days-o.AnzahlTage AS freieTage
FROM Reservierungen AS r INNER JOIN Objekte AS o ON r.[Objekt-Nr] = o.[Objekt-Nr]
WHERE (((r.Anreisetag)>=[Formulare]![Statistik]![von] And (r.Anreisetag)<=[Formulare]![Statistik]![bis]))
GROUP BY r.[Objekt-Nr];
oder
Code:
SELECT r.[Objekt-Nr], Sum(r.Miete) AS SummevonMiete, Sum(Anreisetag-Abreisetag) AS days, days-o.[AnzahlTage] AS freieTage
FROM Reservierungen AS r INNER JOIN Objekte AS o ON r.[Objekt-Nr] = o.[Objekt-Nr]
WHERE (((r.Anreisetag)>=[Formulare]![Statistik]![von] And (r.Anreisetag)<=[Formulare]![Statistik]![bis]))
GROUP BY r.[Objekt-Nr];

Bekomme die Meldung:
In der Abfrage ist der angegebene Ausdruck days - AnzahlTage nicht als Bestandteil einer Aggregatfunktion enthalten

ändere ich den code ab auf

Code:
SELECT r.[Objekt-Nr], Sum(r.Miete) AS SummevonMiete, Sum(Anreisetag-Abreisetag) AS days, o.[AnzahlTage] AS freieTage
FROM Reservierungen AS r INNER JOIN Objekte AS o ON r.[Objekt-Nr] = o.[Objekt-Nr]
WHERE (((r.Anreisetag)>=[Formulare]![Statistik]![von] And (r.Anreisetag)<=[Formulare]![Statistik]![bis]))
GROUP BY r.[Objekt-Nr];

bekomme ich
In der Abfrage ist der angegebene Ausdruck freieTage nicht als Bestandteil einer Aggregatfunktion enthalten
 
Zuletzt bearbeitet:
Die Fehlermeldung sagt dir doch ganz genau was falsch ist.
Anzahl freie Tage wird pro Tag geerechnet. Das ist so in meinem Beispiel und es ist also Falsch für Access. (be MySQL würde es gehen). Dann nimm einfach die Formel von days und zeieh das MAX aus der Objekttabelle.
SQL:
Sum(Anreisetag-Abreisetag) - MAX(o.AnzahlTage) AS freieTage
 
Zurück