Veröffentlicht 8. Juli 200520 j Folgende Aufgabe: Eine Tabelle hat Artikel,Produktgruppen,Kriterien Ich brauch jetzt alle Artikel die in mehreren Produktgruppen sind und sich durch unterschiedliche Kriterien unterscheiden.
8. Juli 200520 j Folgende Aufgabe: Eine Tabelle hat Artikel,Produktgruppen,Kriterien Ich brauch jetzt alle Artikel die in mehreren Produktgruppen sind und sich durch unterschiedliche Kriterien unterscheiden. SELECT * FROM (SELECT Artikel, Count(Produktgruppe) PG, Count(Kriterien) K FROM Tabelle group by Produktgruppe, Kriterien) T1 WHERE PG > 1 AND K > 1 Ist das das, was du wolltest?
8. Juli 200520 j das statement tut bei mir nicht (hab MS Sql-Server) Mein Ansatz war so: Select Artikel From Artikelkriterien Group by Artikel Having Count( distinct(Produktgruppe) )> 1 ABer wie bekomm ich noch die unterschiedlichen Kriterien je Produktgruppe ? Ich soll nämlcih nur die Ausgeben wo die Kriterien der Produktgruppen unterschiedlich sind
8. Juli 200520 j Ich habe jetzt nicht lange drüber nachgedacht aber würde da nicht ein SELECT DISTINCT reichen?
11. Juli 200520 j Ich habe dein Datenbankmodel noch nicht begriffen... Ist wirklich alles in einer Tabelle?? Und du schreibst das du mehrere Kriterien PRO Gruppe haben willst, aber in deinem Select fragst du die Tabelle ArtikelKriterien ab was darauf schließen lässt das die Kriterien nicht auf die Gruppen sondern auf die Artikel beziehen....????
11. Juli 200520 j Hallo zusammen, ich bin mir noch nicht ganz sicher, was du genau haben willst, aber vielleicht erfüllt das hier ja seinen Zweck... select distinct t1.artikel from tabelle t1 , tabelle t2 where t1.artikel = t2.artikel and t1.produktgruppe <> t2.produktgruppe and t1.kriterien <> t2.kriterien Gruß, Axl
11. Juli 200520 j Danke für die Antworten. Ja, es handelt sich wirklich nur um eine Tabelle da liegt ja auch die Schwierigkeit drin. Also ich mach mal ein Beispiel: Ich habe mehrere Artikel und brauche alle Artikel die in unterschiedlichen Produktgruppen sind. Zum Beispiel: Filter Ist in der Produktgruppe: Kaffee und Öl. Und diese Produkte müssen sich jetzt noch zusätzlich durch unterschiedliche Kriterien unterscheiden. Zum Beispiel: Kaffefilter hat das Kriterium: Größe, Gewicht Ölfilter: Farbe, Durchmesser Nochmal Zusammengefasst: Ich brauche alle Artikel die es in mind. 2 Produktgruppen gibt. Und die sich noch zusätzlich durch ihre Kriterien unterscheiden. (und das ganze in einer Tabelle) @Axelhammer: Teste grad dein SQL
11. Juli 200520 j Ich habe das nicht getestet aber du must doch nur deinen Ansatz oben nehmen und das gleiche nochmal mit den Kriterien machen. Nun hast du zwei Ergebnismengen. Wenn du nun diese Ergebnismengen miteinander verbindest hast du das ergebnis. Also ungefähr so: select AA.artikel from (Select Artikel From Artikelkriterien Group by Artikel Having Count( distinct(Produktgruppe) )> 1 ) AA , (Select Artikel From Artikelkriterien Group by Artikel Having Count( distinct(Kriterien) )> 1 ) BB where AA.artikel = BB.artikel; Ggf. anpassen auf die Syntax deines dbms... was benutzt du?
11. Juli 200520 j Hab getestet beide SQL's liefern das selbe ergebnis: SQL 1: select AA.artikel from (Select Artikel From Artikelkriterien Group by Artikel Having Count( distinct(Produktgruppe) )> 1 ) AA , (Select Artikel From Artikelkriterien Group by Artikel Having Count( distinct(Kriterien) )> 1 ) BB SQL 2: select distinct t1.artikel from tabelle t1 , tabelle t2 where t1.artikel = t2.artikel and t1.produktgruppe <> t2.produktgruppe and t1.kriterien <> t2.kriterien wobei Sql 2 schneller ist. Jetzt muss ich mal anhand von testdaten sehen ob das so richtig ist. :mod: Bis dahin. VIELEN DANK
11. Juli 200520 j hast du sql1 so ausgeführt wie es da steht, oder mit der where-Bedingung die ich oben noch dran hatte?
11. Juli 200520 j ich habs schon mit der where Bedingung ausgführt nur falsch gepostet :floet: SQL 1: select AA.artikel from (Select Artikel From Artikelkriterien Group by Artikel Having Count( distinct(Produktgruppe) )> 1 ) AA , (Select Artikel From Artikelkriterien Group by Artikel Having Count( distinct(Kriterien) )> 1 ) BB where t1.artnr = t2.artnr Aber ich weiß nicht ob die beiden Sql's stimmen, da es mehrere Kriterien gibt die zuvergleichen sind. Besipiel: Produktgruppe X hat 5 Kriterien (a,b,c,d,e) Produktgruppe y hat 5 Kriterien (a,b,c,d,f) So jetzt müsse quasi die kompletten Kriterien verglichen werden. Da e und f nicht übereinstimmen sollte dieser Datensatz angezeigt werden.
11. Juli 200520 j Die SQL's stimme leider immer noch nicht ganz da ein Artikel mehrere Kriterien haben kann funktioniert der Vergleich "t1.kriterien <> t2.kriterien" nicht
12. Juli 200520 j verstehe, das hörte sich oben so an, als wenn die Artikel einfach nur mehrere Kriterien haben müssen, aber nicht unterschiedliche Kriterien im Bezug auf die anderen Artikel... Ich glaube bei diesem Problem wirst du mit sql nicht weit kommen. Und wenn doch mit einem Aufwand, bei dem du irgendein Porgramm schon lange fertig hast... Ich würde da eine Porgrammlogik reininvestieren. Und wenn nicht Ãm Frontend, dann irgenwas mit Pl/SQL bzw. bei MS heißt es glaube ich T-SQL (?) welches dann eine temporäre tabelle füllt o.ä.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.