Mawin: MySql Subqueries Problem

Hi,
ich verzweifle bei folgender Abfrage:

In einer Datenbank ("db") gibt es eine Tabelle "Benutzer".
Die besitzen (jetzt vereinfacht) zwei Attribute: "b_Name" und "b_Adresse".

Jetzt würde ich gerne alle Benutzer ausgeben (mit beiden Attributen) wo der gleiche Wert in "b_Adresse" mindestens ein zweites Mal bei einem anderen Benutzer vorkommt.
(Also welche Benutzer am selben Ort wohnen.)

Wie macht ich das?

LG Mawin

  1. Moin,

    Hi,
    ich verzweifle bei folgender Abfrage:

    In einer Datenbank ("db") gibt es eine Tabelle "Benutzer".
    Die besitzen (jetzt vereinfacht) zwei Attribute: "b_Name" und "b_Adresse".

    Jetzt würde ich gerne alle Benutzer ausgeben (mit beiden Attributen) wo der gleiche Wert in "b_Adresse" mindestens ein zweites Mal bei einem anderen Benutzer vorkommt.
    (Also welche Benutzer am selben Ort wohnen.)

    Wie macht ich das?

    Welches DBMS?

    Ich würde es erstmal so machen, aber vielleicht gibt es noch eine sinnvollere oder effizientere Methode:

    SELECT b_Name, b_Adresse FROM db WHERE b_Adresse in (  
       SELECT b_Adresse FROM (  
          SELECT COUNT(*) as Anzahl, b_Adresse FROM db GROUP BY b_Adresse  
       ) x WHERE x.Anzahl > 1  
    )
    

    Grüße Marco

    --
    Ich spreche Spaghetticode - fließend.
    1. Hi,
      funktioniert perfekt, danke!

      LG Mawin

      Moin,

      Hi,
      ich verzweifle bei folgender Abfrage:

      In einer Datenbank ("db") gibt es eine Tabelle "Benutzer".
      Die besitzen (jetzt vereinfacht) zwei Attribute: "b_Name" und "b_Adresse".

      Jetzt würde ich gerne alle Benutzer ausgeben (mit beiden Attributen) wo der gleiche Wert in "b_Adresse" mindestens ein zweites Mal bei einem anderen Benutzer vorkommt.
      (Also welche Benutzer am selben Ort wohnen.)

      Wie macht ich das?

      Welches DBMS?

      Ich würde es erstmal so machen, aber vielleicht gibt es noch eine sinnvollere oder effizientere Methode:

      SELECT b_Name, b_Adresse FROM db WHERE b_Adresse in (

      SELECT b_Adresse FROM (
            SELECT COUNT(*) as Anzahl, b_Adresse FROM db GROUP BY b_Adresse
         ) x WHERE x.Anzahl > 1
      )

      
      >   
      > Grüße Marco
      
    2. Tach!

      Ich würde es erstmal so machen, aber vielleicht gibt es noch eine sinnvollere oder effizientere Methode:

      SELECT b_Name, b_Adresse FROM db WHERE b_Adresse in (

      SELECT b_Adresse FROM (
            SELECT COUNT(*) as Anzahl, b_Adresse FROM db GROUP BY b_Adresse
         ) x WHERE x.Anzahl > 1
      )

        
      Ich hab keine Ahnung, ob vielleicht der folgende innere Teil schneller ist, aber einfacher zu notieren ist er:  
        
      `SELECT b_Adresse FROM db GROUP BY b_Adresse HAVING COUNT(*) > 1`{:.language-sql}  
        
        
      dedlfix.