1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
13
13
ZUGRIFFE
381
381
EMPFEHLEN
-
Hallo

also meine Tabelle sieht so aus:
id|feld0|feld1| feld2|
1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 |
3 | 2 | 1 | 1 |
4 | 2 | 2 | 2 |
5 | 3 | 1 | 1 |
feld1 und feld2 bilden jeweils Feldpaare.
Selektiert möchte ich jetzte alles was
(feld1 = 1 UND feld2 = 1) UND (feld1 = 2 UND feld2 = 2)
rausbekommen müsste ich jetzt also id -> 1, 2, 3, 4
Meine Abfrage ist :
Code :1 2 3 4
SELECT id FROM tabelle WHERE (feld1 = 1 AND feld2 = 1) AND (feld1 = 2 AND feld2 =2)
Leider bekomme ich ein leeres Ergebnis
Geändert von hoctar (09.01.10 um 20:32 Uhr)
-
Es muss in der Mitte ein OR sein, weil der Boolesche-Ausdruck auf jede Zeile angewendet wird.
Code :1 2 3 4
SELECT id FROM tabelle WHERE (feld1 = 1 AND feld2 = 1) [b]OR[/b] (feld1 = 2 AND feld2 =2)
Oder habe ich was falsch verstanden? Denn du sagst
Aber id 5 müsste auch dabei sein.rausbekommen müsste ich jetzt also id -> 1, 2, 3, 4
-
Bei deinem Query würde aber 1,2,3,4,5 rauskommen.
Denn id 5 ist ja auch feld1 = 1 und feld2 = 1, aber nicht feld1 = 2 und feld2 = 2
EDIT:
also feld0 bildet das Paar was zussamengehört, aber ist erstma unwichtig, denn die abfrage geht theoretisch auch ohne feld0
EDIT2: sorry ich hatte ein Fehler, jetzt ist die tabelle richtig
id|feld0|feld1| feld2|
1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 |
3 | 2 | 1 | 1 |
4 | 2 | 2 | 2 |
5 | 3 | 1 | 1 |Geändert von hoctar (09.01.10 um 20:42 Uhr)
-
Die Query von CPoly ist schon richtig. Sie würde die ID 1,2,3,5 als Ergebnis liefern.
Das Deine Abfrage ein leeres Ergebnis liefert ist doch klar,
schließlich kann weder feld1 noch feld2 in einem Datensatz sowohl den Wert 1 als auch den Wer 2 haben - logisch oder!?
-
Ich möchte nicht 1,2,3,5 sonder 1,2,3,4 und die Query von CPoly würde mir alle anzeigen. Das wäre auch okay würde ich noch ein sechstes Feld anlegen mit:
6|3|2|2
EDIT:
Also feld0 stellt immer die verbindung zu 2 Feldern sogesehen.
(1)Ein Paar:
1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 |
(2)Noch eins:
3 | 2 | 1 | 1 |
4 | 2 | 2 | 2 |
(3)Und noch eins:
5 | 3 | 1 | 1 |
Jetzt möchte 1 und 2 haben, denn schaut ma auf die letzten beiden werte, diese sind gleich.
Bei 3 eben nicht.Geändert von hoctar (09.01.10 um 20:47 Uhr)
-
Ich weis nicht ob ich jetzt genau verstanden habe, wie es aussehen soll. Kommen die Werte in feld0 maximal 2 mal vor? Und wenn sie weniger als 2 mal da sind, wie im Fall von |5|3|1|1|, dann soll die Zeile ignoriert werden?
Nochmal: Es sollen alle Zeilen ausgegeben werden, welche eine Partnerzeile mit dem gleichen feld0-Wert haben?
Wenn das so ist, bastel ich schnell was mit einem Subquery zusammen. Ich teste das mal in HeidiSql.
Edit: Ich habe mal etwas rumgespielt
Code sql:1 2 3
SELECT id FROM paare GROUP BY feld0 HAVING COUNT(feld0)=2 oder SELECT id FROM paare WHERE feld0 IN (SELECT feld0 FROM paare GROUP BY feld0 HAVING COUNT(feld0)=2);
Geändert von CPoly (09.01.10 um 21:27 Uhr)
-
ne neIch weis nicht ob ich jetzt genau verstanden habe, wie es aussehen soll. Kommen die Werte in feld0 maximal 2 mal vor? Und wenn sie weniger als 2 mal da sind, wie im Fall von |5|3|1|1|, dann soll die Zeile ignoriert werden?
Also wenn ich z.B. sowas hier habe
1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 |
3 | 1 | 3 | 4 |
4 | 2 | 1 | 1 |
5 | 2 | 3 | 2 |
dann stimmt nur eine kombination überein 1 und 4, weil beide am ende 1 | 1 haben.
Noch ein Beispiel:
1 | 1 | 1 | 1 |
2 | 1 | 9 | 2 |
3 | 1 | 3 | 4 |
4 | 2 | 1 | 1 |
5 | 2 | 3 | 4 |
6 | 2 | 8 | 7 |
hier stimmen ( 1 und 4 ) und ( 3 und 5 ) überein, weil id 1 die werte 1 | 1 hat und ebenso auch id 4 1 | 1 hat. So auch bei 3 und 5.
Aus dieser letzten Tabelle müsste ich also ID: 1, 3, 4, 5 bekommen.
-
Liefert: 1,4Code sql:
1 2 3 4 5 6 7 8 9 10
DELETE FROM paare; INSERT INTO paare (id,feld0,feld1,feld2) VALUES (1,1,1,1), (2,1,2,2), (3,1,3,4), (4,2,1,1), (5,2,3,2); SELECT id FROM paare WHERE CONCAT(feld1,feld2) IN (SELECT CONCAT(feld1,feld2) AS foobar FROM paare GROUP BY foobar HAVING COUNT(foobar)=2);
Liefert: 1,3,4,5Code sql:1 2 3 4 5 6 7 8 9 10 11
DELETE FROM paare; INSERT INTO paare (id,feld0,feld1,feld2) VALUES (1,1,1,1), (2,1,9,2), (3,1,3,4), (4,2,1,1), (5,2,3,4), (6,2,8,7); SELECT id FROM paare WHERE CONCAT(feld1,feld2) IN (SELECT CONCAT(feld1,feld2) AS foobar FROM paare GROUP BY foobar HAVING COUNT(foobar)=2);
Geändert von CPoly (10.01.10 um 11:10 Uhr)
-
Danke erstma für die vielen Antworten
HAVING 2 kann weg .. es können auch mehr als nur 2 sein.
Bei deinem Query würde bei folgendem Fall ein Fehler kommen.
1 | 1 | 2 | 34 |
2 | 2 | 23 | 4 |
Dies würde ein Paar ergeben, obwohl es eigentlich keins ist.
also
ID: 1 CONCAT(feld1, feld2) -> 234
ID: 2 CONCAT(feld1, feld2) -> 234
-
Die Feinheiten wirst du ja selbst hinbekommen. Mach das Concat einzigartig z.b. durch
Code sql:1
CONCAT(feld1,',',feld2)
-
Ah stimmt, danke

also ich versuche jetzt folgendes:
Code :1 2 3 4
SELECT id, CONCAT( ext_attr_id, ',', ext_attr_value_id ) AS pair FROM items_ext_attr WHERE pair = '1,1' AND pair = '3,4'
EDIT: Ah ne sorry,damit durchlaufe ich ja wieder die gleichen paare
aber leider geht das irgendwie nicht
Geändert von hoctar (10.01.10 um 14:42 Uhr)
-
Jetzt bist du wieder exakt da, wo du in deinem ersten Post angefangen hast, nur dass du die beiden Spalten vorher konkateniert hast. pair kann nicht gleichzeitig '1,1' und '3,3' sein!
-
Das stimmt. Leider kann ich deine Lösung bei exakt definierten Paaren nicht erweitern.
Also wenn ich alle Einträge haben möchte bei denen z.B. nur 1,1 und 3,4 vorkommt.
(1,1,1,1), <- hier1
(2,1,9,2),
(3,1,3,4), <- hier2
(4,2,1,1), <- hier3
(5,2,3,4), <- hier4
(6,2,8,7);
Also möchte ich 1,3 ist paar 1 und 4,5 ist paar 2Geändert von hoctar (10.01.10 um 14:56 Uhr)
-
Eben kam ich auf die Lösung:
Code sql:1
SELECT a.id FROM paare a, paare b WHERE a.feld1=b.feld1 AND a.feld2=b.feld2 AND a.id!=b.id
Du joinst die Tabelle mit sich selbst und kannst dann im Endeffekt genau die Abfrage machen, wie du sie schon im ersten Post versucht hast.
Ähnliche Themen
-
Selektieren...
Von twoo im Forum PhotoshopAntworten: 5Letzter Beitrag: 17.08.06, 17:58 -
jTable selektieren
Von martmike im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 04.08.06, 11:45 -
Punkte selektieren
Von peter333 im Forum Cinema 4DAntworten: 3Letzter Beitrag: 10.01.06, 22:19 -
selektieren
Von Nici im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 14.12.04, 14:03 -
selektieren
Von roter Punkt im Forum Cinema 4DAntworten: 2Letzter Beitrag: 03.08.04, 19:24





Zitieren

Login





