Announcement

Collapse
No announcement yet.

SELECT quasi mit alternativer WHERE-Bedingung

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

  • SELECT quasi mit alternativer WHERE-Bedingung

    Hallo!

    Ich weiß nicht, ob das was ich wollen würde, via SQL überhaupt geht ...

    Folgende Tabellen habe ich

    tblMitarbeiter

    PersNr|Name|Vorname
    1 |Müller|Max
    2 |Schmidt|Paul

    tblAbteilung

    PersNr|Abt|
    1 |Abt.C
    2 |Abt.A

    tblTelefon

    PersNr|Art|Rufnummer
    1 |Mobil|123456
    1 |Festn|654321
    1 |Festn|543216
    2 |Mobil|987654

    So in etwa jedenfalls ...

    Die Joins sind ertsmal kein Problem, soweit funktioniert die Abfrage.

    Ist ein SELECT möglich, der die Mobilfunk-Nr. auswirft, wenn vorhanden, wenn nicht, dann aber die Festnetznr. ?

  • #2
    Ich denke mit einer UNION sollte das möglich sein.

    Comment


    • #3
      oder mit COALESCE

      Comment


      • #4
        Danke ertsmal fürs prompte Antworten! :-)

        @Bernhard:
        Irgendwie gefühlsmäßig bin ich auch auf UNION gekommen, lege mir aber syntaktisch-logisch die Karten ... :-(

        @ebis
        Jetzt kommts: COALESCE ist jetzt ganz neu (dafür gefühlsmäßig noch nicht belegt ;-)
        Hab versucht mich im Netz damit vertraut zu machen und bin nun wohl an die Grenzen meiner Abstraktionsfähigkeit gekommen :-(( Die gefundenen Beispiele habe ich schon verstanden, ich bekommes sie aber nicht auf mein Problem transferiert ...

        Da ich defenitiv dazu lernen muss/will/sollte ... hättet Ihr vielleicht den Nerv ein Beispiel zu formulieren .... ginge das ???

        Comment


        • #5
          Originally posted by DarkWave View Post
          @ebis
          Jetzt kommts: COALESCE ist jetzt ganz neu (dafür gefühlsmäßig noch nicht belegt ;-)
          Hab versucht mich im Netz damit vertraut zu machen und bin nun wohl an die Grenzen meiner Abstraktionsfähigkeit gekommen :-(( Die gefundenen Beispiele habe ich schon verstanden, ich bekommes sie aber nicht auf mein Problem transferiert ...
          [HIGHLIGHT="SQL"]CREATE TABLE #Person (PersNr INT, Name SYSNAME, Vorname SYSNAME);
          INSERT INTO #Person SELECT 1, 'Müller', 'Max' UNION SELECT 2, 'Schmidt', 'Paul';

          CREATE TABLE #Abteilung (PersNr INT, Abt SYSNAME)
          INSERT INTO #Abteilung SELECT 1,'Abt.C' UNION SELECT 2, 'Abt.A'

          CREATE TABLE #Telefon (PersNr INT, Art SYSNAME, nr SYSNAME);
          INSERT INTO #Telefon
          SELECT 1, 'Mobil', '123456'
          UNION SELECT 1, 'Festn', '654321'
          UNION SELECT 2, 'Festn', '543216'

          SELECT P.Persnr
          , P.Vorname + CHAR(32) + name
          , A.Abt
          , COALESCE (M.nr, F.Nr) As Telefon
          , M.Nr AS Mobil
          , F.Nr AS Fest
          FROM #Person AS P
          JOIN #Abteilung AS A ON A.Persnr = P.Persnr
          LEFT JOIN (SELECT Persnr
          , Nr
          FROM #Telefon
          WHERE Art = 'Mobil'
          ) AS M ON m.Persnr = A.Persnr
          LEFT JOIN (SELECT Persnr
          , Nr
          FROM #Telefon
          WHERE Art = 'Festn'
          ) AS F ON F.Persnr = A.Persnr

          DROP TABLE #Telefon ;
          DROP TABLE #Abteilung;
          DROP TABLE #Person;[/HIGHLIGHT]

          Comment

          Working...
          X