Announcement

Collapse
No announcement yet.

SQL Abfrage aus zwei Tabellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Abfrage aus zwei Tabellen

    Hallo zusammen,

    bin noch nicht so lange mit SQL und Datenbanken vertraut. Nun habe ich eine kleine DB aufgesetzt und möchte folgende Ausgabe erreichen.

    Ich habe eine Tabelle Mitarbeiter, Touren, und Kunden. Ich habe der Tabelle Touren den FK_Kunden und der Tabelle Mitarbeiter den FK_Touren zugewiesen. Ausserdem habe ich den Mitarbeitern eine Tour zugewiesen (die ID von einer Tour). Jetzt möchte ich erreichen, dass mir die Mitarbeiter mit deren zugewiesener Tour angezeigt werden. Im Anhang habe ich mal ein Paar Bilder zu meiner DB angehängt. Es kann natürlich auch sein, dass ich etwas falsch gemacht habe, dann würde ich mich über die passende Hilfe freuen Bis jetzt erreiche ich, dass mir jeder Mitarbeiter für jede Tour angezeigt wird.

    1.jpg2.jpg3.jpg4.jpg

  • #2
    Hallo BlackNova,

    diese Datenbank hat Designerfehler:
    • Denn mit diesem Schema kann ein Mitarbeiter nur für eine Tour (und Kunde) zuständig sein.
      In der Tabelle Mitarbeiter gehört die Spalte "FK_Touren" gelöscht und in der Tabelle Touren eine Spalte "FK_Mitarbeiter" angelegt.
    • Die Spaltennamen aus der Mitarbeiter und Kundentabelle sollten bzgl. auch vereinheitlicht werden.
      Also Spalte Mitarbeiter.Name umbenennen in Mitarbeiter.Vorname
      und Spalte Kunden.Name umbenennen in Kunden.Nachname


    Um alle Mitarbeiter auszugeben, egal ob diese Touren haben oder nicht, können die Tabellen dann so abgefragt werden:
    Code:
    SELECT
    	 Mitarbeiter.Vorname	AS MitVorname
    	,Mitarbeiter.Nachname	AS MitNachname
    	,Touren.Tour_Name
    	,Kunden.Vorname		AS KdVorname
    	,Kunden.Nachname	AS KdNachname
    FROM Mitarbeiter
    LEFT JOIN Touren
    	ON Touren.FK_Mitarbeiter = Mitarbeiter.id
    LEFT JOIN Kunden
    	ON Kunden.id = Touren.FK_Kunden
    Wenn nur Mitarbeiter mit Touren ausgegen werden sollen, verwende statt "LEFT JOIN" ein "INNER JOIN".

    knoxyz
    Und Falk Prüfer sprach: Formatierung von SQL in Beiträgen

    Comment


    • #3
      Hallo,
      Originally posted by knoxyz View Post
      ...diese Datenbank hat Designerfehler:
      • Denn mit diesem Schema kann ein Mitarbeiter nur für eine Tour (und Kunde) zuständig sein.
        In der Tabelle Mitarbeiter gehört die Spalte "FK_Touren" gelöscht und in der Tabelle Touren eine Spalte "FK_Mitarbeiter" angelegt.
      • Die Spaltennamen aus der Mitarbeiter und Kundentabelle sollten bzgl. auch vereinheitlicht werden.
        Also Spalte Mitarbeiter.Name umbenennen in Mitarbeiter.Vorname
        und Spalte Kunden.Name umbenennen in Kunden.Nachname
      Auch fehlt mir bei den Kunden irgendwie der Ort!? Eine Tour kann immer nur einen Kunden haben, ist das tatsächlich so? Ansonsten müsste hier zwischen Touren und Kunden noch eine m:n Beziehung mit einer Kunden_Touren-Tabelle erstellt werden.

      @knoxyz: Formatierung von SQL in Beiträgen

      Ergänzung: Telefon- und Hausnummer als int anzulegen ist erfahrungsgemäß keine gute Idee. Bei der Hausnummer bekommst du spätestens bei der 1A Probleme und wie willst du z.B. eine gültige Telefonnummer der Form +49 (4711) 081531 speichern oder einfach nur die Vorwahl (führende Nullen werden bei Zahlen ignoriert) kenntlich machen?
      Auch dürften für einige Orte 10 Stellen zu wenig sein! (Stichwort Gebietsreform: Ortabc OT Dorfxyz)

      Gruß Falk
      Zuletzt editiert von Falk Prüfer; 27.07.2012, 08:41.
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Originally posted by Falk Prüfer View Post
        Hallo,

        Auch fehlt mir bei den Kunden irgendwie der Ort!? Eine Tour kann immer nur einen Kunden haben, ist das tatsächlich so? Ansonsten müsste hier zwischen Touren und Kunden noch eine m:n Beziehung mit einer Kunden_Touren-Tabelle erstellt werden.
        Nein, dass soll eigentlich nicht so sein. Eine Tour kann diverse Kunden haben. Inner JOIN hatte ich auch schon aufm Schirm, war mir aber nicht sicher, ob es so auch funktioniert. Ich werde es die Tage ändern und schauen wie weit ich dann wieder komme.

        Vielen Dank für eure Hilfe!!!

        Gruß BlackNova

        Comment

        Working...
        X