Office: verschiedene Abfragen an einer Beispieldatenbank

Helfe beim Thema verschiedene Abfragen an einer Beispieldatenbank in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Guten Morgen, für die Schule steigen wir gerade in SQL ein und sollen mit der Hilfe einer Access-Datenbank kleine Abfragen erstellen und uns dann... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von steffi1986, 11. Juni 2010.

  1. steffi1986 Neuer User

    verschiedene Abfragen an einer Beispieldatenbank


    Guten Morgen,

    für die Schule steigen wir gerade in SQL ein und sollen mit der Hilfe einer Access-Datenbank kleine Abfragen erstellen und uns dann den SQL-Code dazu anschauen...

    Leider komme ich bei einigen Fragen nicht wirklich weiter und vielleicht hat ja jemand eine Idee und kann mir das ein wenig erklären...

    a.) Welche Firma hat noch nichts bestellt?
    Man müsste sich also die CustomerID in der Tabelle Customers anschauen und alle CustomerIDs entfernen, die auch in der Tabelle Orders auftauchen, aber wie nun die Abfrage heißen soll, kann ich nicht sagen...

    b.) Welches sind die teuersten verkauften Produkte, und welche Produkte erzielten in einer Bestellung die niedrigsten Einnahmen?
    Man müsste hier sich den UnitPrice anschauen und davon die teuersten ermitteln, also z.B. die teuersten fünf oder so. Mit der Funktion Max() erhalte ich leider nur einen Preis. In der zweiten Abfrage muss ich die Quantitiy mit dem UnitPrice multiplizieren, weil dies meine Einnahmen sind und dann mir die Orders anschauen und jeweils den niedrigsten Preis nehmen und ausgeben.
    Nach einem Tipp handelt es sich hierbei um zwei Abfragen.

    c.) Gibt es Mitarbeiter, die sich auf die Bearbeitung von Bestellungen von Kunden eines Landes spezialisiert haben?
    Hier muss man sich die Employees anschauen und über Orders mit den Customers verknüpfen und dann schauen, dass es für den Employee jeweils nur ein Customer-Country gibt, aber wie kann ich sowas definieren?

    d.) Welche Firma bietet Produkte aus allen Kategorien an?
    Hier müsste man wohl schauen, welche Firma überhaupt in allen Kategorien anbietet und dann mit den Produkten angleichen...


    Im Anhang findet ihr zum Einen die gezippte Datenbank und zum Anderen ein Schema der Datenbank. Über Tipps würde ich mich riesig freuen.
     
    steffi1986, 11. Juni 2010
    #1
  2. racoon0506 Erfahrener User
    Formuliere deine Beschreibung anders, dann wird auch die Abfrage logisch!
    Betrachte alle CustomerID in der Tabelle Customers, die in der Tabelle Orders genau 0 mal auftauchen.
    Hier musst du mit der Funktion Anzahl arbeiten und beide Tabellen über einen Join zusammenführen.

    SELECT ... FROM ... LEFT JOIN ON .... GROUP BY ....HAVING (Count(....)=0);

    Anstelle von MAX() verwende TOP(). Dabei lässt sich angeben, wie viele Werte ausgegeben werden sollen. Z.B: Top(5).

    Genauso wie in Frage a).....
    Hier ist ein Join über beide Tabellen notwendig. Desweiteren muss die Anzahl der Customer-Country gleich 1 sein.
    SELECT .... FROM .... LEFT JOIN ON..... GROUP BY .... HAVING (Count(....)=1);

    Frage ebenfalls umformulieren: Wie viele Kategorien gibt es und welche Firma liefert Produkte aus genau dieser Anzahl von Kategorien. Sind also zwei Abfragen, die in einer zusammengefasst werden.
     
    racoon0506, 11. Juni 2010
    #2
  3. steffi1986 Neuer User
    Hallo.

    Vielen Dank für deine Nachricht, dadurch konnte ich die erste Abfrage schon einmal erfolgreich erstellen.

    Bei den nächsten bin ich noch ein wenig am rätseln...

    zu (b):
    Habe das TOP eingefügt, aber leider erhalte ich kommischerweise erhalte ich zunächst 11 Ergebnisse, welche aber nicht den teuersten enthält, sondern den billigsten und nach einer weiteren Änderung erhalte ich leider wieder nur den teuersten...
    Code:
    SELECT TOP 5 Max([UnitPrice]) AS Ausdr1
    FROM OrderDetails;
    
    zu (c):
    Habe nun die folgende Abfragen, aber diese liefert leider überhaupt kein Ergebnis:
    Code:
    SELECT Employees.FirstName, Employees.LastName
    FROM Employees INNER JOIN (Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID) ON Employees.EmployeeID = Orders.EmployeeID
    GROUP BY Employees.FirstName, Employees.LastName
    HAVING (((Count(Customers.Country))=1));
    
    Vielleicht hast du da noch einen Tipp, wo mein Denkfehler liegt...
     
    steffi1986, 11. Juni 2010
    #3
  4. racoon0506 Erfahrener User

    verschiedene Abfragen an einer Beispieldatenbank

    zu b) du kannst TOP() nicht mit MAX() kombinieren. MAX() liefert nunmal nur einen Maximalwert....
    TOP() hingegen alleine liefert dir die angegebene Anzahl von Datensätzen.
    Hab allerdings oben nicht angegeben, dass man die Datensätze entsprechend sortieren lassen sollte...
    ...ORDER BY [UnitPrice]; bei Bedarf dann für absteigende Sortierung DESC anhängen.
    Eigentlich sollte das über
    Code:
    SELECT TOP 5 OrderDetails.UnitPrice
    FROM OrderDetails
    ORDER BY OrderDetails.UnitPrice DESC;
    gehen, aber mir wirft Acc07 da mehr als 5 Datensätze aus, weshalb ich diese Lösung verwende.....
    Code:
    SELECT TOP 5 tbl1.UnitPrice
    FROM (SELECT OrderDetails.UnitPrice
    FROM OrderDetails
    ORDER BY OrderDetails.UnitPrice DESC) as tbl1;
    
    Hierbei ist in der Unterabfrage allerdings noch eine Gruppierung einzufügen, damit nicht 5 mal der gleiche UnitPrice angezeigt wird, sondern die fünf höchsten.... (ich soll ja nicht die Aufgabe lösen, sondern nur Hinweise liefern....)

    zu c)
    Beginne mit einer einfachen Abfrage, die du dann als Basis für die eigentliche Frage verwendest.
    Zunächst solltest du die Informationen Customers.Country und Orders.EmployeeID joinen. Die Datensätze sind ja über die CustomerID verknüpft. Jetzt hast du zunächst eine Liste der Mitarbeiter und der jeweiligen Länder, in denen sie Kunden haben.
    Diesen SQL-Ausdruck setzt du in Klammern und baust darum herum die restliche Abfrage, die dir die gewünschten Mitarbeiterdaten aus der Tabelle Employees dazuzieht und gleichzeitig nur die Datensätze ausgibt, die als Count() eine 1 liefern.
    z.B. so.
    Code:
    SELECT Employees.EmployeeID, Employees.FirstName, Employees.LastName
    FROM Employees LEFT JOIN (SELECT Customers.Country, Orders.EmployeeID
    FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
    ORDER BY Orders.EmployeeID)  AS tbl1 ON Employees.EmployeeID = tbl1.EmployeeID
    GROUP BY Employees.EmployeeID, Employees.FirstName, Employees.LastName
    HAVING (((Count(tbl1.EmployeeID))=1));
    Wenn die Abfrage kein Ergebnis liefert, liegt das wohl daran, dass in der Tabelle kein Mitarbeiter ist, der sich auf ein Land spezialisiert hat.....
    (auch diese Abfrage ist nicht ganz korrekt, sondern dient als Veranschaulichungsbeispiel. Count greift hier ein falsches Feld ab!)
     
    racoon0506, 12. Juni 2010
    #4
Thema:

verschiedene Abfragen an einer Beispieldatenbank

Die Seite wird geladen...
  1. verschiedene Abfragen an einer Beispieldatenbank - Similar Threads - verschiedene Abfragen Beispieldatenbank

  2. Variable Abfrage auf verschiedene Tabellenblätter

    in Microsoft Excel Hilfe
    Variable Abfrage auf verschiedene Tabellenblätter: Hallo zusammen, bitte um Hilfe bei folgendem Problem: Ausgangssituation: Tabelle "Artikel" mit allgemeinen Stammdaten, darunter je eine Spalte "Artikelnummer" und "Sachmerkmalnummer" Tabellen...
  3. Daten aus 2 verschiedenen Abfragen zusammenführen

    in Microsoft Access Hilfe
    Daten aus 2 verschiedenen Abfragen zusammenführen: Hallo Zusammen, ich habe zwei Abfragen, die zu einer zusammengeführt werden sollen. In beiden Abfragen wird z.B. das Jahr 2003 herausgefiltert. Abfrage ABC: Nr1, Nr2, Jahr, Umsatz1 Abfrage DEF:...
  4. Abfrage von verschiedenen Werten mit Abhänigkeit zu verschiedenen Zeiten

    in Microsoft Excel Hilfe
    Abfrage von verschiedenen Werten mit Abhänigkeit zu verschiedenen Zeiten: Hallo zusammen :) ich bearbeite gerade ein Projekt in unserer Uni und brauche dafür dringend eure Hilfe, da dies meinen "Excel-Horizont" übersteigt :D Also zu meiner Frage: Es geht sich bei...
  5. Abfrage mit 3 verschiedenen Rückgabewerten

    in Microsoft Excel Hilfe
    Abfrage mit 3 verschiedenen Rückgabewerten: Hallo Leute, Ich möchte eine Zelle nach Wochentagen Abfragen (Text in der Zelle) Wenn in der Zelle Mo Di Mi oder Do steht, soll in die Zelle mit der Abfrage 8:00 eingetragen werden. Wenn Fr...
  6. Verschiedene Berechnungen in einer Abfrage

    in Microsoft Access Hilfe
    Verschiedene Berechnungen in einer Abfrage: Moin! Ich möchte in einer Abfrage verschiedene Berechnungen ausführen. Spalte x soll in der neunen Spalte nach verschiedenen Formeln umgerechnet werden. Diese Formeln sollen sich je nach...
  7. Wenn-Abfrage aus verschiedenen Zellen/Dropdowns

    in Microsoft Excel Hilfe
    Wenn-Abfrage aus verschiedenen Zellen/Dropdowns: Hallo, ich versuche gerade, mit Hilfe einer "Wenn"-Abfrage Werte in Zellen anzeigen zu lassen. Dabei soll durch diese "Wenn-"Abfrage aber ein ganzer Bereich aus Zellen abgefragt werden. Sprich:...
  8. Erstellung Berichte auf Basis verschiedener Abfragen

    in Microsoft Access Hilfe
    Erstellung Berichte auf Basis verschiedener Abfragen: Als absoluter Access-Neuling habe ich eine für meine Arbeit wichtige Datenbank aufgebaut. Anschließend habe ich mehrere Abfragen erstellt, die z.T. auch Formeln beinhalten. Nun möchte ich einen...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden