Zum Inhalt springen

SQL-Abfrage


Terminator85

Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

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....????

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.ä.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...