Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SQL-Abfrage

Empfohlene Antworten

Veröffentlicht

Folgende Aufgabe:

Eine Tabelle hat Artikel,Produktgruppen,Kriterien

Ich brauch jetzt alle Artikel die in mehreren Produktgruppen sind und sich durch unterschiedliche Kriterien unterscheiden.

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?

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

Ich habe jetzt nicht lange drüber nachgedacht aber würde da nicht ein SELECT DISTINCT reichen?

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

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

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

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?

Hey,

vielen Dank werde ich gleich mal testen

-->MS SQL Server 2000

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

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.

Die SQL's stimme leider immer noch nicht ganz da ein Artikel mehrere Kriterien haben kann funktioniert der Vergleich "t1.kriterien <> t2.kriterien"

nicht :(

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.