Announcement

Collapse
No announcement yet.

SQL Abfrage

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

  • SQL Abfrage

    Hi ich hätte da mal eine Frage

    ich habe eine Tabelle Mitarbeiter:
    MID
    MName
    MNachname

    und ich habe eine Tabelle Abteilung
    AID
    ANAME

    Nun bräuchte ich eine Abfrage die mir alle Mitarbeiter mit Komma getrennt zu der Abteilung liefert. Gibt es eine solche Abfrage, oder kann ich sowas nur mit Hilfe eines Programms lösen, mit schleife ?

    also ich habe bisher nur die Idee gehabt, dass es mit einer SQL Function geht und mit Programmlogik. Beides wollte ich wenn möglich vermeiden

    vielen dank im vorraus

    grüße
    S
    --
    http://www.vic-fontaine.com/

  • #2
    Über was sind denn die beiden Tabellen miteinander verbunden?

    Comment


    • #3
      ^das ist peinlich
      gibt in der Mitarbeiter TAbelle noch das Feld MAID, welches auf die AID der Abteilung verweist.

      danke für die schnelle antwort
      --
      http://www.vic-fontaine.com/

      Comment


      • #4
        Hallo,

        hier mein Vorschlag:

        select m.MNachname, m.MName from Mitarbeiter m join Abteilung a on m.MAID=a.AID where a.AName='Buchhaltung'

        Comment


        • #5
          Originally posted by schlaemmer View Post
          Nun bräuchte ich eine Abfrage die mir alle Mitarbeiter mit Komma getrennt zu der Abteilung liefert. Gibt es eine solche Abfrage, oder kann ich sowas nur mit Hilfe eines Programms lösen, mit schleife ?
          Unter MS-SQL-Server 2005 würde ich das so machen
          Code:
          CREATE TABLE #Abteilung (AID INT NOT NULL PRIMARY KEY, ANAME NVARCHAR (20)) ;
          INSERT INTO  #Abteilung VALUES (1, 'Buchhaltung');
          INSERT INTO  #Abteilung VALUES (2, 'Marketing');
          
          CREATE TABLE #Mitarbeiter (MID INT NOT NULL PRIMARY KEY
          			 , MAID INT NOT NULL FOREIGN KEY REFERENCES  #Abteilung (AID)
          			 , MNAME NVARCHAR (50)  
          			, MNachname NVARCHAR (50))  ;
          INSERT INTO #Mitarbeiter VALUES (1, 1, 'Fritz', 'Kunz');
          INSERT INTO #Mitarbeiter VALUES (2, 1, 'Franz', 'Hinz');
          INSERT INTO #Mitarbeiter VALUES (4, 2, 'Mark', 'Eting');
          INSERT INTO #Mitarbeiter VALUES (4, 2, 'Ismir', 'Übel');
          
          
          SELECT	A.Aname As Abteilung
          	, LEFT(CSV, LEN(CSV)-2) AS Mitarbeier
          FROM	#Abteilung AS A
          CROSS APPLY (SELECT MName + '  '  + MNachname + ', '
          	       FROM	#Mitarbeiter AS M
          	      WHERE	M.MAID = A.AID
          	      ORDER BY	MID
          	      FOR XML	PATH('')
          	    ) AS TheList (csv)
          ;
          liefert dann das:
          Abteilung Mitarbeier
          -------------------- ------------------------------------------------------
          Buchhaltung Fritz Kunz, Franz Hinz
          Marketing Mark Eting, Ismir Übel

          (2 Zeile(n) betroffen)

          Comment

          Working...
          X