hawkmaster: Select Distinct , mehrere Spalten anzeigen

Hallo zusammen,
vielleicht ist es ja ganz einfach.
Mit dem SQL:

  
SELECT DISTINCT `InternalValue` FROM `testvalues` WHERE `InstallID` = 9  

bekomme ich 30 Zeilen zurück. Ich habe damit doppelte Einträge in der SPalte InternalValue unterdrückt.
Jetzt würde ich aber gerne noch zusätzlich Spalten anzeigen. Nämlich "TypeID" und "Code"
Wenn ich es so versuche:

  
SELECT DISTINCT `InternalValue`, 'TypeID', 'Code' FROM `testvalues` WHERE `InstallID` = 9  

Werden mir aber wieder zuviel Zeilen zurückgebracht.

Müsste man hier mit Subselects arbeiten?

vielen Dank und viele Grüße
hawk

  1. Hallo,
    und was möchtest du eigentlich als Ergebnis haben? Distinct erstreckt sich für gewöhnlich immer über alle angegebenen Spalten.

    'InternalValue', 'TypeID', 'Code', 'InstallID'

    'AAAA', 17, 0815, 9
    'AAAA', 18, 0815, 9
    'AAAB', 18, 4711, 9
    'AAAA', 17, 0815, 9
    'AAAA', 17, 4711, 9

    Gruss, Frank

    1. Hallo Frank,
      vielen Dank für deine Hilfe,
      Es ist so das in der Spalte "InternalValue" gleiche Werte vorkommen.
      Damit ich nur die "einmaligen" Werte bekomme, habe ich DISTINCT verwednet.

      Ich würde aber gerne auch noch zusätzliche Spalten anzeigen, weil ich die Informationen auch brauche.
      Es geht mir eigentlich nur darum, dass ich KEINE doppelten oder mehrfachen Einträge in "InternalValue" bekomme.

      vielen Dank und viele Grüße
      hawk

      1. Aber ausgehend von dem Datenbeispiel, dass ich gegeben habe, da hat es 4 Records mit 'AAAA' davon willst du nur einen haben, aber von welchem der 4 willst du dann die anderen Felder sehen? Vom 1., 2. ... und welches wäre der 1. oder der 2.?
        Cheers, Frank

        1. Ja du hast Recht,
          ich muss das nochmals überdenken bzw. eine andere Lösung suchen
          Denn ich muss auch noch die Spalte "Code" mit vergleichen.
          Also doppelte Werte in Spalte InternalValue und in "Code"

          danke nochmals
          Gruss
          Hawk

  2. Hi,

    Jetzt würde ich aber gerne noch zusätzlich Spalten anzeigen. Nämlich "TypeID" und "Code"
    Wenn ich es so versuche:

    SELECT DISTINCT InternalValue, 'TypeID', 'Code' FROM testvalues WHERE InstallID = 9

    
    >   
    > Werden mir aber wieder zuviel Zeilen zurückgebracht.  
      
    Dadurch, dass du hier nicht explizit Gruppierst, umgehst du zwar das Problem, dass man keine Spalten auslesen darf, die nicht Bestandteil der Gruppierung sind - hast aber mit dem DISTINCT hier genau das gleiche Problem, nämlich das du nicht angegeben kannst, aus welchem der Datensätze, von denen nur einer ins Ergbnis einfliessen soll, denn die Werte der anderen Spalten entnommen werden sollen.  
      
    
    > Müsste man hier mit Subselects arbeiten?  
      
    Ja. Oder ggf. auch einem SELF JOIN.  
      
    MfG ChrisB  
      
    
    -- 
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]