php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.11.2011, 16:12  
Neuer Benutzer
 
Registriert seit: 13.09.2011
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
Smile2059 befindet sich auf einem aufstrebenden Ast
Standard expliziter Vergleich zweier Gruppen

Hallo, ich hab seit Tagen ein Problem und komm da einfach nicht weiter, ich hoffe Ihr könnt mir helfen bzw mir einen stoß in die richtige Richtung geben.

Ich habe 2 Tabellen

Code:
groupA
{
     id,
     userID
}

groupB
{
     id,
     userID
}
In jeder dieser Tabellen werden Gruppenkonstellationen gespeicher.
(alle userIDs mit der selben "group.id" bilden eine Gruppe, so das verschiedene Konstellationen entstehen können.)

Jetzt zu meinem Problem.
Ich hab eine Gruppe von userIDs aus "groupB" ( 5, 15, 25 ) die natürlich die selbe "groupB.id" haben und möchte nun prüfen ob es die selbe Gruppenkonstellationen auch in "groupA" gibt.

Wenn ja würde Ich gerne die "groupA.id" zurück bekommen und wenn nicht halt NULL / 0 ..

Ich hatte das mal so Probiert..

Code:
SELECT
     groupA.id
FROM
     groupA
WHERE
     groupA.userID IN ( 5, 15, 25 )
AND
    groupA.id IN (SELECT groupA.id FROM groupA GROUP BY groupA.id HAVING count(groupA.id)=3) 
GROUP BY
     groupA.id
..aber ich bekomme auch eine "groupA.id" wenn ich eine Konstellation von usern eingebe die gar nicht so in "groupA" existiert.

Ich hoffe Ihr könnt mir helfen bin da etwas festgefahren, ich weiss das MySql nicht alles kann, und das ich das Problem auch durch mehrere Abfragen und in PhP bearbeiten kann, jedoch glaub ich das es auch mit einer Abfrage möglich sein müsste.

Geändert von Smile2059 (08.11.2011 um 17:16 Uhr).
Smile2059 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.11.2011, 10:05  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Die Idee mit dem Having ist im Grunde nicht schlecht, aber so wie du es drin hast prüfst du nur, ob die Gruppe 3 Elemente hat - egal welche.

Code:
SELECT
     groupA.id
FROM
     groupA
WHERE
     groupA.userID IN ( 5, 15, 25 )
GROUP BY
     groupA.id
HAVING count(groupA.id)=3
ungetestet.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 08.11.2011, 17:11  
Neuer Benutzer
 
Registriert seit: 13.09.2011
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
Smile2059 befindet sich auf einem aufstrebenden Ast
Standard

Hallo, danke für deine Antwort.

Im ersten Moment wo ich das getestet habe sah es ganz gut aus, jedoch funktioniert das leider nicht immer.

Wenn man zB. nach der Gruppenkonstellationen ( 15, 25 ) sucht ..

Code:
SELECT
     groupA.id
FROM
     groupA
WHERE
     groupA.userID IN ( 15, 25 )
GROUP BY
     groupA.id
HAVING count(groupA.id)=2 
.. erhält man die "groupa.id" von dieser Konstellation ( 5, 15, 25 ).



Ich glaub "IN" ist hier die falsche Wahl. Aber ich war auch nicht untätig und habe ein bisschen rumprobiert. Und folgendes ist dabei rausgekommen.

Code:
SELECT DISTINCT
    bar.id, bar.userID
FROM 
     (SELECT * FROM groupa WHERE groupa.userID IN (25, 5)) AS foo
INNER JOIN
     (SELECT * FROM groupa WHERE groupa.id IN (SELECT id FROM groupa GROUP BY id HAVING count(id)=2)) AS bar
ON 
     foo.userID = bar.userID
Aber das hält leider auch keinen gründlichen Test durch. Und ich seh die schwachstelle wieder im "IN" - Operator.

Es muss doch eine Möglichkeit geben das Problem "elegant" zu lösen.
Smile2059 ist offline   Mit Zitat antworten
Alt 08.11.2011, 17:16  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Stimmt. Man könnte die Where-Bedinung ganz weglassen und dann die passenden und nicht-passenden Einträge in den Gruppen zählen. Aber elegant ist anders.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 10.11.2011, 12:16  
Neuer Benutzer
 
Registriert seit: 13.09.2011
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
Smile2059 befindet sich auf einem aufstrebenden Ast
Standard

So, ich glaube ich gebe es auf. So wie ich das sehe, mit meinem derzeitigen Kenntnisstand, ist es eher unwarscheinlich eine Lösung zu finden die effektiv und elegant ist.

Danke nochmal an die, die sich auch den Kopf zerbrochen haben.
Ich werd das Problem erstmal so handhaben, das ich die Anfragen aufteile und in PhP bearbeite.

Falls doch noch jemand eine gloreiche glorreiche Idee hat .. oder ich vieleicht einen anderen Titel wähle sollte .. ich bin für jede kreative Kritik offen.
__________________
Je höher der Baum,
desto neidischer der Wind.
Smile2059 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Array in Gruppen in Gruppen autfteilen halskrause PHP Einsteiger 6 28.10.2011 14:52
Suche Gedankenanstoß - Benutzer in Gruppen einteilen markusK HTML, Usability und Barrierefreiheit 6 09.09.2011 00:32
Problem mit Vergleich praesi09 PHP Einsteiger 3 26.07.2011 11:39
Vergleich zweier Tabellen: Laufzeit?! sandemann Datenbanken 15 28.07.2010 08:40
Problem bei IP Vergleich. Logischer Vergleich funktioniert nicht. fdm PHP Tipps 2009 10 08.04.2009 19:30
[Erledigt] Vergleich zweier IP Adressen MatzeMuc86 PHP Tipps 2009 4 24.03.2009 13:59
Vergleich zweier Strings liefert falsches Ergebniss suse PHP Tipps 2009 4 23.01.2009 12:12
Vergleich zweier Variablen funktioniert nicht? Stephan_87 PHP Tipps 2008 12 09.12.2008 07:10
Benutzerverwaltung, Benutzer <-> Gruppen zuweisen maeck PHP Tipps 2008 6 04.07.2008 15:09
Brauche hilfe bei ausgabe und sortierung von gruppen Demonking PHP Tipps 2006 24 14.06.2006 10:59
Vergleich zweier Tabellen Mandalay Datenbanken 11 22.03.2006 06:32
In welchen Gruppen fehlen User? JK Datenbanken 2 11.10.2005 11:32
Abfrage Vergleich zweier Tabellen MortakArtos Datenbanken 2 22.02.2005 16:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
expliziter vergleich, zwei kontaktgruppen in google vergleichen, vergleich zweier gruppen wie

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:19 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum