Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

korrelierte Unterabfrage/Exists

Begonnen von tina90, April 30, 2014, 13:57:30

⏪ vorheriges - nächstes ⏩

tina90

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.

DF6GL

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.








Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

tina90

Danke für deine Antwort, weisst du was bei den Beziehungen falsch ist?

DF6GL

Hallo,

nein, weil ich die Datenkonstellation Deiner Aufgabenstellung nicht kenne...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access


Hondo

Auch hier wieder, es fehlen die Joins!

tina90

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

Hondo

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?

Hondo

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

tina90