Announcement

Collapse
No announcement yet.

Inhalt eines Feldes in Abhängigkeit eines anderen Feldes vergleichen

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

  • Inhalt eines Feldes in Abhängigkeit eines anderen Feldes vergleichen

    Hallo liebe Entwicklerforum-Gemeinde,

    seit längere Zeit stöbere ich in diesem Forum und habe eigentlich immer irgendwo eine passende Hilfe für meine Probleme gefunden. Nun sitze ich seit längerem über einem Problem wo ich einfach keinen Lösungsansatz finde, obwohl ich mir sicher bin, dass dies wahrscheinlich ganz einfach ist.

    Ich möchte das Problem in einer vereinfachten Form darstellen:

    Eine Tabelle mit ein paar tausend Daten und drei Spalten.

    1. Spalte enthält eine eindeutige Kundennummer
    2. Spalte kann die Werte a,b,c,d,e,f enthalten
    3. Spalte enthält den Nachnamen einer Person

    Als Ergebnis benötige ich nun alle Kundennummern, die in der zweiten Spalte den Wert a enthalten, wobei der Nachname dort identisch seien muss, wo die Spalte zwei den Wert a und d hat.

    Ich hoffe es versteht überhaupt jemand mein Problem

    Tausend Dank und lieben Gruß
    Markus

  • #2
    Bin mir jetzt nicht ganz sicher, wie das genau gemeint ist, denke aber, es ist mit einem einzigen Statement lösbar. Kannst du vielleicht mal ein Beispiel geben mit ein paar Datensätzen und wie das Ergebnis dann aussehen soll?

    bye,
    Helmut

    [edit]: welche Datenbank verwendest du denn?

    Comment


    • #3
      Also die Tabelle sieht beispielhaft so aus:

      Spalte 1 Spalte 2 Spalte 3
      1 A Meier
      2 B Huber
      3 D Meier
      4 E Huber
      5 F Meier
      6 C Schneider
      7 A Maier
      8 E Schneider

      Als Ergebnis sollte dann "1" erscheinen, da Meier sowohl mit A als auch D in der Spalte 2 steht. Hoffe das hilft weiter!

      Die Datenbank ist DB2

      Code:
      SELECT Spalte1
      FROM T1
      WHERE Spalte2 = A
      AND ???
      ...
      ...
      Danke schon mal!
      Zuletzt editiert von Invisedor; 13.04.2010, 23:22.

      Comment


      • #4
        Arbeite selber nicht mit DB2 aber vielleicht geht das Statement auch dort:

        Code:
        select A.spalte1 from tabelle as A
        where A.spalte2 = 'A' and exists
        (select 1 from tabelle as B where B.spalte2 = 'D'
        and B.spalte3 = A.spalte3)
        bye,
        Helmut

        Comment


        • #5
          Hallo,

          Lösungen für solche Abfragen gibts hier schon mehrfach...

          Klassisch mit Subquery:
          [highlight=sql]
          select a.Spalte1
          from Tabelle a
          where a.Spalte3 in (select b.Spalte3 from Tabelle b where b.Spalte2 = 'A')
          and a.Spalte3 in (select c.Spalte3 from Tabelle c where c.Spalte2 = 'D')
          [/highlight]

          Oder unter zuhilfenahme von Count:
          [highlight=sql]
          select a.Spalte1
          from Tabelle a
          where a.Spalte2 in ('A', 'D')
          group by a.Spalte1
          having count(distinct a.Spalte2) = 2
          [/highlight]

          Gruß Falk
          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


          • #6
            Hallo Falk,

            das mit dem Count funktioniert sicher nicht - kein Bezug auf Spalte3 (Name)

            bye,
            Helmut

            Comment


            • #7
              Originally posted by hwoess View Post
              Hallo Falk,

              das mit dem Count funktioniert sicher nicht - kein Bezug auf Spalte3 (Name)
              Ähm, ... Ja Kommt davon wenn man ohne Nachzudenken die Standards abspult .
              Das geht hier natürlich nur mit Spalte3 statt Spalte1 in Select und Group By. Wenn man die Spalte1 auch benötigt, dann wirds wieder eine Subquery und entsprechend komplizierter.

              Wobei... wenn ich nochmal drüber nachdenke ist auch die "Klassische" Lösung nicht ganz richtig im Sinne des gewünschten Ergebnisses, da sie neben der 1 auch die 3 liefern würde. Da ist deine Lösung etwas exakter.

              Gruß Falk
              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


              • #8
                Vielen Dank auf jeden Fall,

                konnte das Problem lösen!

                Gruß Markus

                Comment

                Working...
                X