DISTINCT - GROUP BY Problem

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

  • DISTINCT - GROUP BY Problem

    Hallo,

    hab in der DB E-Mail Adressen von Spielern die doppelt sind, da sich Mann und Frau unter der gleichen Email angemeldet haben.
    Ich kann zwar mit folgendem Code die Adresse nur einmal ausgeben und fürs Mailing verwenden, möchte aber gerne noch bestimmen, dass es nur an den Mann geht.
    Das Feld heißt in dem Fall "anrede". Eintrag herr.
    PHP-Code:
    select from spieler_mail where letter !='n' group by email order by email asc 
    Kriegs nicht gebacken....
    thx

  • #2
    also 1. müsste der Thread mal nach SQL gemoved werden...


    und 2. wenn Herr und Frau die gleiche E-Mail-Adresse haben, wie zum Teufel willst du bestimmen, dass die Mail nur an die Mailadresse des Mannes gehen soll?

    und 3. Benutze kein "SELECT *"
    signed oder unsigned... das ist hier die Frage

    Kommentar


    • #3
      Hallo!

      Ein Tipp dazu wäre noch um es sich einfacher zu machen und zu vermeiden einfache in der Registrierung zum Beispiel ein Abfrage machen die die e-mail addis durchläuft und wenn eine e-mail addi genommen wird,wird die Registrierung verhindert und der User muss sich mit einer anderen e-mail addi registrieren.
      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
      http://www.lit-web.de

      Kommentar


      • #4
        du sagst doch selber dass du die anrede prüfen musst. wieso machst du es nicht im sql-statement?

        @case wieso bitte kein select *?

        edit: ach verlesen die mail muss natürlich auch an singlefrauen raus tjo unter mir steht nen ansatz
        Zuletzt geändert von RanzigeMilch; 23.04.2008, 13:52.
        Die Milch bleibt ranzig!

        Kommentar


        • #5
          ich nehm an, das mit den doppelten Mail-Adressen ist beabsichtigt (und macht in diesem Fall auch Sinn). Leider kenne ich deine Tabelle nicht, deshalb kann ich dir die Lösung auch nicht im Detail erklären. Sicher brauchst du aber einen Subselect, so im Stil von
          PHP-Code:
          $sql "
              SELECT
                  a.email,
                  (
                      SELECT
                          b.name
                      FROM
                          spieler_mail p
                      WHERE
                          a.email = b.email
                      AND
                          b.geschlecht = 'männlich'
                  ) name
              FROM
                  spieler_mail a
              GROUP BY
                  email
              ORDER BY
                  email"

          Das geht aber nur, wenn der Subselect sicher nur eine Zeile zurückgibt.
          Ausserdem ist es nicht gerade nett, auf gemeinsamen Adressen nur den Mann anzusprechen, aber das gehört nicht hier hin.
          Gruss
          H2O

          Kommentar


          • #6
            Warum Subselect? Warum nicht joinen?
            [FONT="Helvetica"]twitter.com/unset[/FONT]

            Shitstorm Podcast – Wöchentliches Auskotzen

            Kommentar


            • #7
              Hmm nunja, mittlerweile kann ich es mir auch besser vorstellen....


              kein Select * weils einfach total unsauber ist.... Der einzige Grund einen * zu benutzen ist ein COUNT(*) weil es schneller ist.

              Der Subselect liefert ja nur einen Namen, wenn es auch ein Männername ist... aber ich denke der TS will auch den Frauennamen, wenn es eine Frau ist.



              PHP-Code:
              $sQuery "
                  SELECT
                      email
                      (
                          SELECT
                              b.name
                          FROM
                              spieler_mail b
                          WHERE
                              a.email = b.email
                          ORDER BY
                          if(b.geschlecht = 'männlich', 1, 2) ASC
                          LIMIT 1,1
                      ) name
                  FROM
                      spieler_mail a
                  GROUP BY
                      email
                  ORDER BY
                      email"

              (ungetestet)


              aber soetwas in der Art dürfte dir die Männlichen Namen ausgeben, wenn es welche gibt und ansonsten den weiblichen...
              signed oder unsigned... das ist hier die Frage

              Kommentar


              • #8
                Original geschrieben von RanzigeMilch
                wieso bitte kein select * ?
                Deswegen
                Original geschrieben von unset
                Warum nicht joinen?
                Vielleicht wäre das besser. Meine Abfrage stimmt ja in jedem Fall nicht, weil nur die Adressen der Männer ausgegeben werden.
                Gruss
                H2O

                Kommentar


                • #9
                  Richtig - es gibt die Adressen manchmal doppelt, weil man sich als Spieler registrieren muss. Und manchmal sind es eben Ehepaare mit der selben Email.
                  Habs noch nicht ausprobiert - aber subselect geht in die Richtung.
                  Ich möchte auf eine Email reduzieren und dabei aber den Datensatz verwenden wo Herr drinsteht.
                  Denn beim Auslesen geht ja in der Schleife das Mailing raus und dann brauch ich ja die Anrede.

                  Kommentar


                  • #10
                    also bei dem link treffen bei meinen scripten bei denen ich select * benutze kein Argument gegen select * zu.
                    Dass man das net benutzt wenn man nur ein paar spalten braucht is klar aber weißt du das in diesem fall?
                    Die Milch bleibt ranzig!

                    Kommentar


                    • #11
                      Original geschrieben von Claus
                      dann brauch ich ja die Anrede.
                      Dann nimm die Abfrage von case, ergänze den Subselect mit der Anrede und den Select mit dem Komma nach email, und du hast in etwa, was du brauchst.

                      @RanzigeMilch
                      Dann hast du es nicht richtig gelesen. Mindestens das letzte Argument trifft immer zu! Und das finde ich gerade für Abfragen, die hier gepostet werden relativ wichtig.
                      Gruss
                      H2O

                      Kommentar


                      • #12
                        ich dokumentiere eh von daher wayne
                        Zuletzt geändert von RanzigeMilch; 24.04.2008, 11:23.
                        Die Milch bleibt ranzig!

                        Kommentar


                        • #13
                          Original geschrieben von RanzigeMilch
                          ich dokumentieren eh von daher wayne
                          OffTopic:
                          Ist das Deutsch?
                          [FONT="Helvetica"]twitter.com/unset[/FONT]

                          Shitstorm Podcast – Wöchentliches Auskotzen

                          Kommentar


                          • #14
                            OffTopic:
                            lies dir mal deinen post bei den uservorstellungen durch.. danach darfst du gerne nochmal fragen...
                            Die Milch bleibt ranzig!

                            Kommentar


                            • #15
                              Original geschrieben von RanzigeMilch
                              OffTopic:
                              lies dir mal deinen post bei den uservorstellungen durch.. danach darfst du gerne nochmal fragen...
                              OffTopic:
                              Gibt es ein Problem mit meinem Post? Ungeachtet dessen verstehe ich nicht, was die Verwendung von "SELECT *" mit "dokumentieren" zu tun hat? Da sich dieser Sinn mir leider nicht erschließt ist es direkt nochmal schwieriger zu verstehen was du meinst und deinen Vertipper zu glätten ...
                              [FONT="Helvetica"]twitter.com/unset[/FONT]

                              Shitstorm Podcast – Wöchentliches Auskotzen

                              Kommentar

                              Lädt...
                              X