Nur doppelte Einträge aus MySQL Abfrage anzeigen
Marcolino
- datenbank
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
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
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
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
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
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
Hi Cheatah
Ufff, verstehe es nicht ganz. Kannst Du mir zeigen wie ich es genau machen muss.
wäre dir dankbar!
gruss marco
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
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
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
Hi!
Wäre mega!
"Mega"? Was soll das sein?
1000 * 1000, oder 1024*1024, je nach case!
off:PP
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