mixmastertobsi: MySQL Abfrage mit Join

Hallo,

ich beziehe mich auf folgenden Forum-Beitrag.
http://forum.de.selfhtml.org/archiv/2012/6/t210165/#m1431675

Leider bekomme ich die Abfrage nicht hin.
Folgendes habe ich probiert...

SELECT artikel_attribut.atrnr, COUNT(distinct value1.attribut), COUNT(distinct value2.value)
FROM artikel\_attribut
LEFT JOIN artikel_attribut_value as value2 ON value2.atrnr=artikel_attribut.atrnr
LEFT JOIN artikel_attribut as attribut2 ON attribut2.anr=artikel_attribut.anr
LEFT JOIN artikel_attribut_value as value1 ON value1.atrnr=attribut2.atrnr
WHERE artikel_attribut.anr='100002059'
GROUP BY artikel_attribut.atrnr

Die Abfrage soll herausfinden, bei welchem Artikeln die Attribute doppelt hinterlegt wurden und daher eine eindeutige Auswahl nicht möglich ist.

Wer kann mit helfen.

Die Datenbank ist wiefolgt strukturiert (vereinfachtes Beispiel).

Im Beipsiel sollte die Datenbank ausgeben, dass der Artikel 1 und 3 nicht eindeutig ist, da Attribut 1 M und Attribut 2 rot gleich sind.

artikel_attribut
atrnr | anr
-------------
1     | 1
2     | 1
3     | 1

artikel_attribut_value
atrnr | attribut | value
------------------------
1     | 1        | M
1     | 2        | rot
2     | 1        | M
2     | 2        | blau
3     | 1        | M
3     | 2        | rot

  1. Im Beipsiel sollte die Datenbank ausgeben, dass der Artikel 1 und 3 nicht eindeutig ist, da Attribut 1 M und Attribut 2 rot gleich sind.

    Aha M ist also rot :-)

    Auch wenn ich das nicht verstehe, guck dir mal GROUP BY und HAVING an.

    1. Hallo,

      nein - für die Attribut ist folgendes hinterlegt

      1 = M + rot (doppelt)
      2 = M + blau
      3 = M + rot (doppelt)

      1. Ich kriegs irgendwie grad immer noch nicht auf die Reihe. Hier mal das Prinzip.
        Joine das alles so zusammen dass jedes Attribut pro Artikel in einer eigenen Zeile erscheint.
        Dann SELECT Artikelnummer, COUNT(*) FROM ... GROUP BY Artikelnummer HAVING COUNT(*) > 1
        Das heißt es wird nach Artikelnummer gruppiert und davon wird nur das ausgegeben, was pro Gruppe mehr als einen Eintrag hat.