1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Eine Fahrradwerkstatt

Dieses Thema im Forum "Allgemeine Diskussionen" wurde erstellt von bluepeople12, 28 August 2011.

  1. bluepeople12

    bluepeople12 Aktiver Benutzer

    Hallo Leute,

    ich hab hier eine Aufgabe und würde von euch wissen, ob mein Lösungsvorschlag dazu passt oder nicht. Hier mal die Aufgabe:

    Mein Lösungsvorschlag (SQL-Befehl) schaut so aus:
    Würdet ihr sagen, dass sie richtig ist?
     
  2. ukulele

    ukulele Datenbank-Guru

    Nein, nicht ganz. Du erhältst z.B. keine Teile, die gar nicht in der besteht_aus Tabelle geführt werden weil sie keine Unterteile haben. Ich würde an deiner stelle erstmal beide Fälle seperat abbilden a) Teile des Herstellers und b) Teile, die nicht vom Hersteller sind aber Teile des Herstellers beinhalten. Ich finde das dann auch verständlicher, leichter ist sowas natürlich immer mit Testdaten, bin nicht so der Theorie Fan :)

    Ein Beispiel:
    Code:
    SELECT    Teil.TeilNr,
            Teil.Name
    FROM    Teil
    -- Fall a)
    -- IN kann durch = ersetzt werden, wenn es ausgeschlossen ist, das es zwei gleichnamige Hersteller gibt.
    WHERE    Teil.HNr IN (    SELECT    Hersteller.HNr
                            FROM    Hersteller
                            WHERE    Hersteller.Name = "Peugeot" )
    -- Fall b)
    OR        Teil.TeilNr IN (    SELECT    besteht_aus.TeilNr
                                FROM    besteht_aus
                                WHERE    besteht_aus.UnterteilNr IN (    SELECT    Teil.TeilNr
                                                                        FROM    Teil
                                                                        WHERE    Teil.HNr IN (    SELECT    Hersteller.HNr
                                                                                                FROM    Hersteller
                                                                                                WHERE    Hersteller.Name = "Peugeot" )
                                                                    )
                            )
    Natürlich kann man das ganze auch etwas kürzen oder mit JOINs machen, deine Abfrage wird auch einige richtige Treffer liefern aber eben nicht alles. Je nach Testdaten.
     

Diese Seite empfehlen