DISTINCT über 2 Spalten ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • DISTINCT über 2 Spalten ?

    Guten Morgen Board,

    in einer Mitarbeitertabelle gibt es die Spalten vor und Nachname und weitere Attribute. Hier sind Vor- und Nachname der Hauptschlüssel.

    In einer anderen Tabelle die Funktionen der Mitarbeiter.

    Wie kann man nun mit einem "DISTINCT" sicherstellen, dass nur Leute mit unterschiedlichen Vor UND Nachnamen ausgewählt werden ?

    PHP-Code:
    $res =& $this->_db->query("
    SELECT * ,DISTINCT c.name_f + DISTINCT c.name_l, concat(c.name_f, ' ', c.name_l) AS name
    FROM contacts c, contacts_functions cf
    WHERE (c.id = cf.id) 
    AND   (cf.public = '"
    .$public."') 
    AND   (cf.id_company = '"
    .$company_id."')
    ORDER BY c.name_f"
    ); 
    So haut es nicht hin.
    Pickel ? Übergewicht ? Depressionen ?
    Brot, Kartoffeln und Milch sind Gift!
    http://www.paleofood.de

  • #2
    CONCAT() ?

    und warum machst du nicht direkt einen UNIQUE-schlüssel über beide spalten?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      ??

      Concat baut mir die Namen und Fornamen zu einem vollständigen Namen zusammen, den brauche ich für die spätere Ausgabe.

      Was meinst du mit Uniqueschlüssel?
      Pickel ? Übergewicht ? Depressionen ?
      Brot, Kartoffeln und Milch sind Gift!
      http://www.paleofood.de

      Kommentar


      • #4
        Original geschrieben von antman
        Concat baut mir die Namen und Fornamen zu einem vollständigen Namen zusammen, den brauche ich für die spätere Ausgabe.
        ach was ....

        SELECT DISTINCT CONCAT(feld1 , feld2) .....

        Original geschrieben von antman
        Was meinst du mit Uniqueschlüssel?
        http://www.php-resource.de/forum/sho...threadid=14531
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Habe mir die Themen durchgelesen.
          Aber den Unterschied verstehe ich nicht.

          Primärschlüssel heißt doch, dass das Attribut in allen Zeilen nur ein mal vorkommen darf. Dabei kann ein Primärschlüssel auch aus mehreren Attributen bestehen. Also ist das genau das gleiche wie der Unique Schlüssel.

          Um mal bei den Katzen und Hunden zu bleiben.
          Der Primärschlüssel würde das Tier eindeutig bestimmen. Warum erstellt man für den Primärschlüssel nicht IMMER eine extra Spalte "ID" ? Wenn Der Primärschlüssel immer eindeutig ist. Wozu gibt es dann noch Unique ?

          Ich könnte mir nur so vorstellen, dass UNIQUE eingentlich ganichts mit der Organisation und Relation der Daten zu tun, man möchte einfach nicht, dass die Farbe Grau(bei den Tieren) zweimal vorkommt? Aber dann hat man ja in einem Datensatz einen Primary Key UND einen UNIQUE key. Warum heißt ist der UNIQUE key ein Key und nicht einfach ein UNIQUE Attribut? Der Unique key würde doch garnicht mit anderen Tabellen verknüpft werden.

          Aber wie soll man nun im Nachinein ein UNIQUE über 2 Spalten machen. Unterstützt phpmyadmin das mittlerweile?
          Zuletzt geändert von antman; 01.10.2004, 12:44.
          Pickel ? Übergewicht ? Depressionen ?
          Brot, Kartoffeln und Milch sind Gift!
          http://www.paleofood.de

          Kommentar


          • #6
            lies dir den anderen thread noch einmal langsam durch.

            man kann mit UNIQUE andere felder (ausser dem PK selbst) nämlich auch unique machen. und das beste .... man kann auch feld1+feld2 ZUSAMMENGENOMMEN unique machen. das geht zwar auch mit PK direkt. aber man muss es nicht.

            und der PMA kann das auch.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Dort steht aber nicht wie man es im NACHINEIN ändern kann.
              Zuletzt geändert von antman; 01.10.2004, 13:16.
              Pickel ? Übergewicht ? Depressionen ?
              Brot, Kartoffeln und Milch sind Gift!
              http://www.paleofood.de

              Kommentar


              • #8
                ALTER TABLE tabelle ADD UNIQUE KEY keyname (spalte1, spalte2)
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Danke!
                  Pickel ? Übergewicht ? Depressionen ?
                  Brot, Kartoffeln und Milch sind Gift!
                  http://www.paleofood.de

                  Kommentar


                  • #10
                    Ich bin es nochmal.

                    Also, ich wüsste absolut keinen Grund warum es möglich ist einen Primary Key über mehr als eine Spalte zu erstellen?
                    Was hat das auf sich ? Man kann doch für jede Tabelle eine id spalte einfügen. Also mitarbeiter_id, bestellung_id, etc, etc

                    Hat jemand ein Beispiel wann es besser wäre nicht mit id Spalten zu arbeiten ?
                    Pickel ? Übergewicht ? Depressionen ?
                    Brot, Kartoffeln und Milch sind Gift!
                    http://www.paleofood.de

                    Kommentar


                    • #11
                      Original geschrieben von antman
                      Also, ich wüsste absolut keinen Grund warum es möglich ist einen Primary Key über mehr als eine Spalte zu erstellen?
                      komisch, laut deinem eingangsposting hast du doch genau das gemacht ...?

                      Man kann doch für jede Tabelle eine id spalte einfügen. Also mitarbeiter_id, bestellung_id, etc, etc
                      ja, warum du dein datenmodell nicht so aufgebaut hast, ist mir auch schleierhaft.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        komisch, laut deinem eingangsposting hast du doch genau das gemacht ...?
                        id ist bei mir in allen Tabellen Primary key. Wusste mich nicht auszudrücken. Hatte den Vor- und Nachnamen auch auf primary key gesetzt, da ja noch nicht wusste, dass man ein unique über mehrere Spalten haben kann.

                        ja, warum du dein datenmodell nicht so aufgebaut hast, ist mir auch schleierhaft.

                        Also was habe sich die Entwickler dabei gedacht ? Ein primary key sollte doch immer eine integer Zahl sein.
                        Pickel ? Übergewicht ? Depressionen ?
                        Brot, Kartoffeln und Milch sind Gift!
                        http://www.paleofood.de

                        Kommentar


                        • #13
                          So bekomme ich aber nur den Namen, brauch aber den ganzen Datensatz:

                          PHP-Code:
                          SELECT DISTINCT CONCAT(feld1 feld2) ... 
                          So klappt es auch nicht:
                          PHP-Code:
                          SELECT *, DISTINCT CONCAT(feld1 feld2) ... 
                          So klappt es auch nicht:
                          PHP-Code:
                          SELECT DISTINCT CONCAT(feld1 feld2) ... 
                          Pickel ? Übergewicht ? Depressionen ?
                          Brot, Kartoffeln und Milch sind Gift!
                          http://www.paleofood.de

                          Kommentar


                          • #14
                            du weisst aber schon, dass du die feldnamen auch alles einzeln reinschreiben darfst, ohne dass eine fehlermeldung kommt?
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              Nein, das ergibt auch eine Fehlermeldung. "You have an error in your sql statement near...".

                              Hatte ich ausprobiert.
                              Pickel ? Übergewicht ? Depressionen ?
                              Brot, Kartoffeln und Milch sind Gift!
                              http://www.paleofood.de

                              Kommentar

                              Lädt...
                              X