Announcement

Collapse
No announcement yet.

LEFT OUTER JOIN mit nur einem verknüpften Satz

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

  • LEFT OUTER JOIN mit nur einem verknüpften Satz

    Hallo,

    angenommen, ich habe eine Firma- und eine Ansprechpartner-Tabelle und möchte alle Ansprechpartner der Firmen haben. Also
    SELECT firma LEFT OUTER JOIN Anprechpartner ...
    Wenn es keinen Ansprechpartner gibt, soll die Firma dennoch ausgegeben werden. Klappt ja auch. Aber angenommen, es gibt mehrere AP zu einer Firma, dann erscheint auch die Firma zweimal. Ich will aber die Firma nur einmal, mit dem ersten oder keinem AP haben. Wie kann ich das bewerkstelligen?
    Danke für Eure Tipps ...

    Dave

  • #2
    Hi,

    mit einer Unterabfrage:

    SELECT f.Firmenid, (SELECT TOP 1 Ansprechpartner from t_Ansprechpartner where Firmenid = f.Firmenid) as Anprechpartner
    from t_Firmen

    So oder ähnlich...

    Grüße

    Julia

    Comment


    • #3
      Hi Julia,

      ja, stimmt, prinzipiell würde das wohl gehen. Allerdings brauche ich fünf Felder aus den Ansprechpartnern, dann bräuchte ich also auch fünf Unterabfragen dieser Art. Nicht sehr elegant, aber ich werde es mal probieren.
      Danke für den Tip ...

      Dave

      Comment


      • #4
        Was eigentlich auch funktionieren müsste, wäre ein Konstrukt ähnlich dem folgenden:

        SELECT firma.*, ap.* FROM firma LEFT OUTER JOIN ap WHERE ap.id IN (SELECT DISTINCT KndNr, id FROM ap)

        Leider funktioniert aber die letzte Abfrage nicht. Angenommen, in der Tabelle sind ID (=PK) und eine Kunden-Nr, wobei eben die Kunden-Nr mehr als einmal vorkommen kann. Gibt es eine Abfrage, die mir die ID liefert von jedem ersten Vorkommen der Kunden-Nr? Damit, glaube ich, hätte ich es auch.

        ...

        Habe mal ein bisschen rumgebastelt, und ich glaube, ich habe es jetzt:
        Code:
        SELECT id FROM (SELECT DISTINCT x.kndnr, 
        (SELECT TOP 1 id FROM kunden_ansprech y WHERE y.kndnr = x.kndnr AND y.funktion LIKE '%Chef%') AS id 
        FROM kunden_ansprech x WHERE x.funktion LIKE '%Chef%') z
        Damit sollte ich die Abfrage haben, die mir die ID zu jeder ersten Kunden-Nr liefert und die ich in der "großen" Abfrage mit IN verwenden kann. Anzahl der Datensätze stimmen zumindest überein.

        Comment

        Working...
        X