Marcolino: Nur doppelte Einträge aus MySQL Abfrage anzeigen

Hallo zusammen

Ich habe ein kleines Problem und zwar habe ich folgende Abfrage:

  
$abfrage_freunde_gemeinsam = "SELECT id_user FROM friends_freunde WHERE id_selbst IN ('631', '1097')  
UNION ALL  
SELECT id_selbst FROM friends_freunde WHERE id_user IN ('631', '1097')";  

Nun möchte ich gerne, dass es mir nur die doppelten Einträge anzeigt.
Wie kann ich das machen?

Vielen Dank für Eure Bemühungen und Hilfe.

Marco

  1. Hi,

    Nun möchte ich gerne, dass es mir nur die doppelten Einträge anzeigt.
    Wie kann ich das machen?

    mit GROUP BY und HAVING.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi

      Also so oder?

      $abfrage_freunde_gemeinsam = "SELECT id_user FROM friends_freunde WHERE id_selbst IN ('631', '1097')
      UNION ALL
      SELECT id_selbst FROM friends_freunde WHERE id_user IN ('631', '1097')
      GROUP BY id_user HAVING COUNT(*) = 2";

      Aber das geht irgendwie nicht es zeigt mir dann immer noch mehrere an!

      lg marco

      1. Hi,

        Also so oder?

        nein. UNION verknüpft _zwei_ Statements, von denen bei Dir eines ein GROUP BY besitzt. Dies muss jedoch im _Ergebnis_ der Verknüpfung beider Statements eingesetzt werden.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo

          Zuerst mal danke für Deine prompten Antworten.
          Leider geht es so auch nicht:

            
          $abfrage_freunde_gemeinsam = "SELECT id_user FROM friends_freunde WHERE id_selbst IN ('631', '1097')  
          GROUP BY id_user HAVING COUNT(*) = 2  
          UNION ALL  
          SELECT id_selbst FROM friends_freunde WHERE id_user IN ('631', '1097')  
          GROUP BY id_user HAVING COUNT(*) = 2";
          

          Ich erhalte dann nur eine einzige id obwohl es drei sein sollten.

          Freue mich auf Dein Feedback.

          Marco

          1. Hi,

            Leider geht es so auch nicht:

            jetzt hast Du ja auch zwei Statements, die beide mit GROUP BY arbeiten, bevor sie zusammengeführt werden; anstatt das _Ergebnis_ der Zusammenführung dieser beiden (nicht gruppierenden) Statements zu gruppieren.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hi Cheatah

              Ufff, verstehe es nicht ganz. Kannst Du mir zeigen wie ich es genau machen muss.

              wäre dir dankbar!

              gruss marco

              1. Hi,

                Ufff, verstehe es nicht ganz.

                das Statement, das Du ursprünglich hattest, war - in seiner Gesamheit! - vollständig und fertig. Aus dem, was es komplett ergibt, musst Du die Ergebnisse selektieren, gruppieren und per HAVING filtern.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hi Cheatah

                  Leider verstehe ich jetzt nur noch Bahnhof.
                  Kannst Du mir nicht helfen wie die gesamte Abfrage sein muss.
                  Wäre mega!

                  lg marco

                  1. Mahlzeit Marcolino,

                    Leider verstehe ich jetzt nur noch Bahnhof.

                    Ägübdn?

                    Kannst Du mir nicht helfen wie die gesamte Abfrage sein muss.

                    Hat er doch getan (in seiner charmant-liebenswürdigen und durchaus korrekten, ihm eigenen Art und Weise):

                    das Statement, das Du ursprünglich hattest, war - in seiner Gesamheit! - vollständig und fertig.

                    Das heißt also, Deine Abfrage

                    SELECT id_user  
                      FROM friends_freunde  
                     WHERE id_selbst IN ('631', '1097')  
                    UNION ALL  
                    SELECT id_selbst  
                      FROM friends_freunde  
                     WHERE id_user IN ('631', '1097')
                    

                    ist absolut korrekt.

                    Aus dem, was es komplett ergibt, musst Du die Ergebnisse selektieren,

                    Du musst um die bestehende Abfrage eine weitere "drumherum bauen", d.h. aus der Ergebnismenge der Abfrage einfach alles auslesen,

                    gruppieren und per HAVING filtern.

                    und auf die gesamte Ergebnismenge die genannten Einschränkungen anwenden.

                    Wäre mega!

                    "Mega"? Was soll das sein?

                    MfG,
                    EKKi

                    --
                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                    1. Hi!

                      Wäre mega!

                      "Mega"? Was soll das sein?

                      1000 * 1000, oder 1024*1024, je nach case!

                      off:PP

                      --
                      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
                    2. Hi zusammen

                      Uff habe jetzt sicher über 2h versucht aber leider finde ich es nicht heraus.

                      Kann mir hier niemand einmal den Code zeigen und mir eine erklärung dazu liefern.

                      Das wäre super lieb!

                      Gruss Marco