Denise PP.: SQL-Frage

Hallo,
ich brauche mal Eure Unterstützung; folgendes Problem:

SELECT WOHNEINHEIT FROM Tab1 where .....

...nun sollen nur die Sätze selektiert werden, wo in einen anderen Tabelle Tab2 die Summe größer als 14 ist, also so: count(PERSONEN_aus_Tab2) > 14

Tab2 sieht ungefähr so aus:

WOHNEINHEIT     PERSONEN      ANZAHL
X               Müller        5
X               Meier         5
X               SCHULZE       5
Y               HORST         .....

Weil X mehr als 14 Personen hat, soll X in Tab1 selektiert werden.

Ich bin noch nicht so lange am programmieren und stoße hier auf meine Grenzen...

Danke für Eure Hilfe....

  1. Hi Denise!

    SELECT Tab1.WOHNEINHEIT  
    FROM Tab1  
    INNER JOIN Tab2 ON (Tab1.WOHNEINHEIT = Tab2.WOHNEINHEIT) AND (SUM(Tab2 .PERSONEN) > 14)
    

    Ungetestet. Ich hoffe, es funktioniert. Aber die Datenbankprofis werden schon einschreiten, wenn es nicht stimmt. =)

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Hi,

      SELECT Tab1.WOHNEINHEIT

      FROM Tab1
      INNER JOIN Tab2 ON (Tab1.WOHNEINHEIT = Tab2.WOHNEINHEIT) AND (SUM(Tab2 .PERSONEN) > 14)

      
      >   
      > Ungetestet. Ich hoffe, es funktioniert. Aber die Datenbankprofis werden schon einschreiten, wenn es nicht stimmt. =)  
        
      Soweit ich mich erinnere muss man bei Aggregat Funktionen (wie SUM) GROUP BY und HAVING benutzen.  
        
      < http://www.devtrain.de/artikel_289.aspx>  
        
      Gruß!
      
  2. Hi,

    jenachdem was du alles ausgeben willst und je nach Datenbanksystem (Oracle, MS SQL, mySQL) geht das in einer einzelnen Abfrage oder mit einer korrelier(ten/enden) Unterabfrage.

    So könnte es gehen:

      
    SELECT WOHNEINHEIT  
     FROM Tab1 outerTab  
     WHERE WOHNEINHEIT IN  
           (SELECT WOHNEINHEIT  
               FROM Tab2  
               GROUP BY WOHNEINHEIT  
               HAVING COUNT(Personen) > 14)  
    
    

    Ciao, Frank