Willkommen bei Entwickler-Forum.
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 11
  1. #1
    Neuer Benutzer
    Registriert seit
    04.10.2017
    Beiträge
    7

    Frage Welche Artikel haben einen höheren Listenpreis als alle Artikel auf Lagerplatz 7?

    Hallo liebe Community,

    ich arbeite derzeit die Übungsaufgaben in einem Buch durch.
    Momentan am Abschnitt 'Join'.

    Die aktuelle Frage, welche mit seit einigen Stunden verzweifeln lässt lautet:
    "Welche Artikel haben einen höheren Listenpreis als alle Artikel auf Lagerplatz 7?"

    Alle Attribute sind innerhalb einer Tabelle.

    PS: Eine mögliche Lösung wäre:
    Code:
    SELECT bezeichnung, listenpreis
    FROM artikel 
    WHERE listenpreis > (SELECT SUM(listenpreis) FROM artikel WHERE lagerplatz = '7');
    Jedoch verwende ich kein Join. Der Autor des Buches jedoch sagt, dass jede Aufgabe mit einem Join gelöst werden soll.
    Hmn - habt ihr weitere Ideen?

    Könnt ihr mir weiterhelfen?

    Liebe Grüße

  2. #2
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.202

    Standard

    Ja, einen Join verwenden.

    Und wie soll jemand eine Antwort geben, ohne das Datenmodell zu kennen?

    Selbstverständlich kennt jeder dein Buch
    Christian

  3. #3
    Neuer Benutzer
    Registriert seit
    04.10.2017
    Beiträge
    7

    Standard

    Zitat Zitat von Christian Marquardt Beitrag anzeigen
    Ja, einen Join verwenden.

    Und wie soll jemand eine Antwort geben, ohne das Datenmodell zu kennen?

    Selbstverständlich kennt jeder dein Buch
    Alle Attribute sind innerhalb einer Tabelle.

    https://imgur.com/a/kyQba

  4. #4
    Neuer Benutzer
    Registriert seit
    04.10.2017
    Beiträge
    7

    Standard

    Zitat Zitat von Christian Marquardt Beitrag anzeigen
    Und? Wie sollen wir jetzt helfen?
    Wir kennen immer noch nicht das Datenmodell
    Ich verwende kein Join. Der Autor des Buches jedoch sagt, dass jede Aufgabe mit einem Join gelöst werden soll.

  5. #5
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.202

    Standard

    Dann joine die Tablelle mit sich selbst.
    Christian

  6. #6
    Neuer Benutzer
    Registriert seit
    04.10.2017
    Beiträge
    7

    Standard

    Zitat Zitat von Christian Marquardt Beitrag anzeigen
    Dann joine die Tablelle mit sich selbst.
    Und wie erhalte ich dann die Namen der Artikel die größer sind als die Summe von allen Artikeln auf Lagerplatz 7?

    Code:
    SELECT * FROM (SELECT * FROM artikel) AS a INNER JOIN artikel AS aa ON a.artikel_nr = aa.artikel_nr;

  7. #7
    Stammgast
    Registriert seit
    26.02.2003
    Beiträge
    4.819

    Standard

    In dem Buch ist das vermutlich gerade das Kapitel 'self-join'. Man kann Tabellen mit sich selbst joinen.
    Wenn du die Idee nicht hattest wirst du auch eher keine Lösung finden. Was an der Stelle noch relevant zu wissen ist das man einer Tabelle einen Alias Namen geben kann. Nur dann kann man ja bei einem join mit sich selbst die 2 ~Versionen~ der Tabelle unterscheiden.

    Code SQL:
    SELECT a1.bezeichnung, a1.listenpreis
      FROM artikel AS a1
             INNER JOIN artikel AS a2 ON a1.listenpreis > a2.listenpreis
     WHERE a2.lagerplatz = '7'

    Edit : Das mit der Summe also das da mehrere artikel an einem Lagerplatz sein können habe ich übersehen. Dann

    Code SQL:
    SELECT bezeichnung, listenpreis
    FROM artikel a1
           INNER JOIN (SELECT SUM(listenpreis) AS listenpreis FROM artikel WHERE lagerplatz = '7') AS a2 ON a1.listenpreis > a2.listenpreis
    Geändert von Ralf Jansen (04.10.2017 um 19:32 Uhr)

  8. #8
    Neuer Benutzer
    Registriert seit
    04.10.2017
    Beiträge
    7

    Standard

    Hallo Ralf,

    Danke für deine Antwort!
    Leider liefert die Abfrage nicht das gewünschte Ergebnis.

    Ich möchte alle Artikel auflisten, die einzeln teurer sind als die Summe aller Artikel auf Lagerplatz 7 :-)

    Danke für den Hinweis auf Self-join!
    Geändert von Christian Marquardt (04.10.2017 um 19:32 Uhr) Grund: Quote entfernt

  9. #9
    Neuer Benutzer
    Registriert seit
    04.10.2017
    Beiträge
    7

    Standard

    Merci!

    Ich stelle gerade 'meinen' größten Fehler fest.
    a1.listenpreis > a2.listenpreis - ich habe immer mit a1.listenpreis = a2.listenpreis gearbeitet. Aber das Gleichheitszeichen durch ein Größer- oder Kleinerzeichen zu ersetzen, da wäre ich so spontan nicht gekommen.

    Vielen Dank!
    Geändert von OtenMoten (04.10.2017 um 19:40 Uhr) Grund: quote entfernt

  10. #10
    Neuer Benutzer
    Registriert seit
    04.10.2017
    Beiträge
    7

    Standard

    ANMERKUNG:

    Aus
    Code:
    SELECT bezeichnung, listenpreis
    FROM artikel a1
           INNER JOIN (SELECT SUM(listenpreis) AS listenpreis FROM artikel WHERE lagerplatz = '7') AS a2 ON a1.listenpreis > a2.listenpreis
    mach
    Code:
    SELECT bezeichnung, a1.listenpreis
    FROM artikel a1
           INNER JOIN (SELECT SUM(listenpreis) AS listenpreis FROM artikel WHERE lagerplatz = '7') AS a2 ON a1.listenpreis > a2.listenpreis

 

 
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •