Ankündigung

Einklappen
Keine Ankündigung bisher.

Reihenfolge bei SQL-Abfragen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Reihenfolge bei SQL-Abfragen

    Hallo Community!

    Ich komme wieder mal mit einer ziemlichen Anfängerfrage um die Ecke.
    Folgendes Szenario. Ich habe eine "Haupttabelle", nennen wir diese Haupttabelle. An dieser hängen zwei "Nachschlagetabellen" hintereinander.
    In der Haupttabelle stehen dann z.b. einige Daten zu einer Schulklasse, also Name, Vorname, usw. der Schüler und eben auch eine Lehrer_ID. In der ersten Nachschlage- oder Hilfstabelle werden dann den Lehrer_IDs Namen zugewiesen und auch eine Geschlecht_ID. Wenn ich nun anhand der Schüler ID herausfinden möchte, ob der Lehrer männlich oder weiblich ist, muss ich mich dann tatsächlich von Tabelle zu Tabelle "hangeln" oder gibt es eine Möglichkeit direkt von der Schüler ID auf das Geschlecht des Lehrers zurückzugreifen?

    Mein Ansatz wäre nun, anhand der Schüler ID die Lehrer ID zu finden und anhand dieser dann das Geschlecht. Irgendwie erscheint mir dieser Ansatz aber nicht pragmatisch oder ist dies tatsächlich der Weg?

    Besten Dank an alle


  • #2
    Zitat von michiman Beitrag anzeigen
    ID herausfinden möchte, ob der Lehrer männlich oder weiblich ist, muss ich mich dann tatsächlich von Tabelle zu Tabelle "hangeln" oder gibt es eine Möglichkeit direkt von der Schüler ID auf das Geschlecht des Lehrers zurückzugreifen?
    Google-Such-Service: JOIN.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Zeig mal dein Tabellendesign. Das du Daten von Schülern + LehrerID in einer Tabelle speicherst kommt mir komisch vor. Schüler haben nämlich keine Lehrer, sondern nur Klassen. Außerdem wozu eine Geschlecht_ID? Was für zusätzliche Informationen möchtest du denn zum Geschlecht speichern?

      Ansonsten ja: Bei relationalen und normalisierten Daten ist das der richtige Weg. Wenn diese Relation oft gebraucht wird bzw. zu einem Performanceengpass wird gibt es andere Lösungsmöglichkeiten von denen du als Anfänger allerdings Abstand nehmen solltest.

      EDIT: Oh, ich danke mit "von Tabelle zu Tabelle 'hangeln'" war bereits ein JOIN gemeint. Wenn nicht, siehe akretschmer.

      Kommentar


      • #4
        Zitat von michiman Beitrag anzeigen
        In der Haupttabelle stehen dann z.b. einige Daten zu einer Schulklasse, also Name, Vorname, usw. der Schüler und eben auch eine Lehrer_ID.
        Hört sich für mich nicht Normalisiert an...
        Würde Vorschlagen dies zu tun, anschließend:

        Zitat von akretschmer Beitrag anzeigen
        Google-Such-Service: JOIN.

        Kommentar


        • #5
          Ok, das war wohl nicht perfekt durchdacht. Ich hab dieses Beispiel konstruiert, da ich dachte, es sei so einfacher, als in mein tatsächliches Projekt einzutauchen. Wollte es nur ein wenig einfacher gestalten

          @akretschmer: Hab ich mir fast gedacht und ich hab da auch schon einiges gelesen. Meine Frage ist nur, ob das über die eine Tabelle hinweg auch geht. Es könnte ja auch sein, dass dahinter nochmal eine hängt, komm ich dann immer noch mit meinem Join von der ersten bis zur letzten Tabelle.

          @Teo: Normalisiert hab ich alles denke ich, bis zur 3NF. Kann durchaus sein, dass irgendwo noch ein kleiner Fehler drin ist, aber ich hab versucht darauf zu achten.

          @Tropi: Was ist denn nun richtig. Von Tabelle zu Tabelle oder mit nem Join.

          Kann ein Join dann über beliebig viele Tabelle erstellt werden?

          Danke euch!

          Kommentar


          • #6
            Erklär doch mal was du mit "von Tabelle zu Tabelle" meinst, wenn nicht JOINs. Ich habe oben schon geschrieben, das ich damit JOINs meine. Aber ja, du kannst beliebig viele Tabelle zusammenjoinen. Wenn du also das Geschlecht eines Lehrers von einem beliebigen Schüler herausfinden willst, hast du üblicherweise einen JOIN von Schüler <-> Klasse und dann einen weiteren Klasse <-> Lehrer. (Schüler, Klasse, Lehrer sind jeweils eigene Tabellen.)

            Kommentar


            • #7
              Ok, vielen Dank. Dann werd ich mich damit genauer beschäftigen. Merci an alle!

              Kommentar


              • #8
                Zitat von michiman Beitrag anzeigen
                Mein Ansatz wäre nun, anhand der Schüler ID die Lehrer ID zu finden und anhand dieser dann das Geschlecht. Irgendwie erscheint mir dieser Ansatz aber nicht pragmatisch oder ist dies tatsächlich der Weg?
                Es ist nicht praktikabel, wenn du das mit einzelnen Abfragen löst... wenn du aber JOIN benutzt, dann ist es die Lösung schlechthin.
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar

                Lädt...
                X