[SQL allgemein] Alles anzeigen, aber verknüpft

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

  • [SQL allgemein] Alles anzeigen, aber verknüpft

    Hallo.

    habe zur Zeit ein Problem mit einer SQL Abfrage.

    Ich habe 3 Tabellen: Person, Buch, Leihstatus
    Bei "Leihe" steht drin ob eine Person ein Buch geliehen hat, also die Nummer der Person und die Nummer des Buches. Außerdem noch ein Datum.

    Ich will jetzt alle Bücher anzeigen lassen, egal ob sie von jemandem geliehen sind oder nicht.
    Und wenn das Buch von jemandem geliehen ist, dann soll der Name (oder die Nummer) der Person auch in der Abfrage dabei stehen.
    Wenn das Buch niemand geliehen hat, dann soll das Feld leer bleiben. (aber ob es leer bleibt ist nicht so wichtig, nur das diejenigen Bücher auch angezeigt werden.)

    Also wenn ich mache
    "WHERE Buch.buchnummer = Leihstatus.buchnummer"
    dann bekomme ich NUR die Bücher, die geliehen sind und wenn ich es weglasse, dann sind die Informationen nicht "verknüpft".

    Kennt jemand eine Lösung?

    Danke im Voraus.

  • #2
    Re: [SQL allgemein] Alles anzeigen, aber verknüpft

    Kennt jemand eine Lösung?
    Ja, ich. Sie ich hier im Forum oben angetackert und mit WICHTIG markiert.

    http://www.php-resource.de/forum/sho...threadid=28292
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      select Buch.*, Leihstatus.* from Buch left join Leihstatus
      on Buch.buchnummer = Leihstatus.buchnummer
      Slava
      bituniverse.com

      Kommentar


      • #4
        Tut mir leid, ich wusste nicht dass JOIN etwas damit zu tun hat.

        ich habe das JOIN wie vorgeschlagen ausprobiert aber es kommt kein einziges Ergebnis.
        Muss es vor oder nach WHERE?
        Jedenfalls kam so oder so kein Ergebnis

        Ich habe auch RIGHT JOIN probiert aber trotzdem nichts.

        Kommentar


        • #5
          ich glaube es liegt daran, dass ich bei FROM noch andere tabellen drin stehen habe, die mit komma getrennt sind.

          kann das sein?

          Kommentar


          • #6
            das join alleine funktioniert jetzt wie im vorschlag, jedoch will ich, dass der name der Person, die das Buch geliehen hat angezeigt wird, also muss ich die Person auch irgendwie bei FROM unterbringen.

            wenn ich nun zusätzlich hintendran "WHERE Person.Personnummer = Leihe.Personnummer" hinschreibe, habe ich wieder nur diejenigen bücher, die ausgeliehen wurden.

            Kommentar


            • #7
              wenn du left join machst , dann muss du auf where am bestens verzichten und zusatzbedingungen in "ON" eintragen.
              leider kann ich dir nicht weiter helfen, da mir die informationen über die Tabellenstruktur, verbund-Felder und genaue Ergebniswunsch fehlen.
              wenn du ein kleiner Tutorial anschaust, wird es bestimmt klappen
              Slava
              bituniverse.com

              Kommentar


              • #8
                ich habe das so versucht:

                SELECT *
                FROM Person, Buch LEFT JOIN Leihstatus ON Buch.buchnummer = leihstatus.buchnummer AND Person.personnummer = Leihstatus.personnummer

                das geht nicht.

                Ich verstehe nicht, wie ich zusätzliche bedingungen bei "ON" mache.

                wie kann ich es machen, dass bei den büchern, die geliehen sind, auch die personennamen angezeigt werden?

                Hier sind meine Tabellen vereinfacht dargestellt:

                Buch: buchnummer, titel
                Person: personnummer, name
                Leihe: leihenummer, buchnummer, personnummer, datum

                Kommentar


                • #9
                  Ich kann nur raten.
                  SELECT
                  FROM Buch.*, Leihstatus.*, Person.* FROM Buch LEFT JOIN Leihstatus ON Buch.buchnummer = leihstatus.buchnummer and (kann ich nur raten)Leihstatus.gelien="ja" INNER JOIN Person on Person.personnummer = Leihstatus.personnummer
                  Slava
                  bituniverse.com

                  Kommentar


                  • #10
                    wieso raten?

                    das Buch gilt dann als geliehen, wenn es einen Eintrag in Leihstatus gibt, der die Information enthält, wer welches Buch geliehen hat.

                    Wenn das Buch wieder zurückgegeben wird, wird der Eintrag gelöscht.

                    Kommentar


                    • #11
                      ich hab mit dem letzten Vorschlag rumprobiert und plötzlich ging es, als ich folgendes eingegeben habe:

                      SELECT *
                      FROM Buch LEFT JOIN Leihstatus ON Buch.buchnummer = leihstatus.buchnummer
                      LEFT JOIN Person on Person.personnummer = Leihstatus.personnummer

                      laso mit 2 mal LEFT JOIN

                      Vielen Dank.

                      Kommentar


                      • #12
                        Original geschrieben von Lensflare
                        wieso raten?

                        das Buch gilt dann als geliehen, wenn es einen Eintrag in Leihstatus gibt, der die Information enthält, wer welches Buch geliehen hat.

                        Wenn das Buch wieder zurückgegeben wird, wird der Eintrag gelöscht.
                        Das habe ich natürlich nicht erwartet, dass du dich überhaupt für statistik und wer, was und wie lange geliehen hat nicht interessierst
                        Slava
                        bituniverse.com

                        Kommentar


                        • #13
                          eine Statistik werde ich kaum brauchen, aber es wäre sicher nicht schlecht wenn die Daten drin bleiben, da hast du recht.

                          Ich werde es wohl so umsetzen, dass das Buch dass als "nicht geliehen" gilt, wenn es entweder keinen eintrag gibt oder wenn im Eintrag ein Abgabedatum eingetragen wurde.

                          Kommentar

                          Lädt...
                          X