Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: tina90 am April 30, 2014, 13:57:30

Titel: korrelierte Unterabfrage/Exists
Beitrag von: tina90 am April 30, 2014, 13:57:30
HILFE HILFE:

Bei mir funktioniert gar nichts, wie läuft das mit der korrelierten Unterabfrage?
Ich suche Nachname, Vorname, Artikelbezeichung, Preis wo der durchsnittspreis kleiner als der Preis ist.

SELECT Nachname & ' ' & Vorname, Artikelbezeichnung, Preis
FROM Kunde, Artikel
WHERE Kunde.KundeID=Kundenvorlage.FSKundeID
AND Vorlage.VorlageID=Kundenvorlage.FSVorlageID
AND Maße.MaßeID=Kundenvorlage.FSMaßeID
AND Maße.MaßeID=Maß_Hilfsmittel.FSMaßID
AND Hilfsmittel.HilfsmittelID=Maß_Hilfsmittel.FSHilfsmittelID
AND Artikel.ArtikelID=Maß_Hilfsmittel.FSArtikelID
AND Rechnung.RechnungID=Artikel.FSRechnungID
AND Preis>(SELECT AVG(Preis) FROM Artikel);

Kann mir auch noch jemand den Begriff EXISTS erklären?
Danke für die Hilfe,
anbei sind nochmals die Beziehungen.
Titel: Re: korrelierte Unterabfrage/Exists
Beitrag von: DF6GL am April 30, 2014, 20:48:09
Hallo,

die Beziehungen der Tabellen (bzw. Daten)  finde ich zunächst etwas fragwürdig...

Ansonsten: öffne den Abfrageentwurf, ziehe alle (benötigten) Tabellen hinein (Tabellen hinzufügen) und definiere Verknüpfungen über die Verknüpfungslinien, wenn die nicht schon aus den Beziehungen übernommen wurden. Stelle bei den Eigenschaften der Bezeihungslinien die gewünschte Verknüpfungsart ein  (inner , left, right join) und setze im Kriteriumsfeld (bzw. den Kr.-Feldern)  den/die gewünschten Werte ein.

Sodann schau Dir die SQL-Ansicht der Abfrage an...


Exits wird True und zeigt somit den Datensatz an, wenn die (gefilterte)  Unterabfrage Datensätze liefert.








Titel: Re: korrelierte Unterabfrage/Exists
Beitrag von: tina90 am April 30, 2014, 21:06:02
Danke für deine Antwort, weisst du was bei den Beziehungen falsch ist?
Titel: Re: korrelierte Unterabfrage/Exists
Beitrag von: DF6GL am April 30, 2014, 21:17:50
Hallo,

nein, weil ich die Datenkonstellation Deiner Aufgabenstellung nicht kenne...
Titel: Re: korrelierte Unterabfrage/Exists
Beitrag von: tina90 am April 30, 2014, 21:21:57
Danke
Titel: Re: korrelierte Unterabfrage/Exists
Beitrag von: Hondo am April 30, 2014, 21:48:41
Auch hier wieder, es fehlen die Joins!
Titel: Re: korrelierte Unterabfrage/Exists
Beitrag von: tina90 am Mai 01, 2014, 10:15:00
Danke Hondo für deine Hilfe, bei den Joins hat es funktioniert.

Kannst du mir nochmal bei der korrelierten Unterabfrage helfen, bitte!
Die Aufgabe heisst so:

Ermittle ein Select Statement, das die Artikelbezeichnung, Preis, Fertigstellungsdatum und Rechnungsdatum angibt. Jedoch sollte das Fertigstellungsdatum = Rechnungsdatum sein.

SELECT Artikelbezeichnung, Preis, Fertigstellungsdatum, Rechnungsdatum
FROM Artikel, Rechnung
WHERE Rechnung.RechnungID=Artikel.FSRechnungID
AND Fertigstellungsdatum=(SELECT Rechnungsdatum FROM Rechnung
WHERE Rechnung.RechnungID=Artikel.FSRechnungID);

Welchen Fehler hab ich hier gemacht?
Danke für deine Hilfe, lg
Titel: Re: korrelierte Unterabfrage/Exists
Beitrag von: Hondo am Mai 01, 2014, 10:43:36
Sorry, ich helfe dir nicht solange du nicht die Joins in der Abfrage gesetzt hast. Das musst du zuerst machen!
Du kannst nicht einfach nach From alle Tabellen auflisten, sondern die verjointen Tabellen müssen in den Joins stehen. Warum machst du nicht was ich dir gesagt habe, indem du in einen neuen Abfrageentwurf die Tabellen einfügst, die Felder auswählst die angezeigt werden sollen und dann in die SQL-Ansicht wechselst?
Titel: Re: korrelierte Unterabfrage/Exists
Beitrag von: Hondo am Mai 01, 2014, 10:52:30
Ich geb dir mal ein Beispiel:

SELECT A.Firma, A.Ort, R.Rechnungsnummer, R.Rechnungsdatum, P.Rechnungsposition, P.Anzahl, P.Einheit, P.Einzelpreis
FROM (
    Adressen AS A
    Right  JOIN Rechnungen As R ON A.ID = R.AdressID
)
INNER JOIN Rechnungspositionen As P ON R.ID = P.RechnungsID
WHERE R.Rechnungsnummer=1050
Titel: Re: korrelierte Unterabfrage/Exists
Beitrag von: tina90 am Mai 01, 2014, 12:06:32
Danke! :-)