Denkblockade - Hilfe bei Select-Abfrage benötigt - MySQL4x

Klausi2000

Mitglied
Hallo,

irgendwie bin ich gerade blockiert - folgende Situation:

Tabelle1:
id,cat_id

Tabelle2:
id,articlenummer, .... , variantId,....

Dabei gilt: tabelle1.id = tabelle2.id

Ich möchte nun die Anzahl der Einträge in Tabelle1 herausbekommen, wobei die id's mit der gleichen variantId in tabelle2 zusammengezählt werden.

Angezeigt werden solle aber nur wenn diese Anzahl aus Tabelle1 >1 ist ...

Klingt ein bisschen difus aber vielleicht versteht mich ja jemand ... ;)

Danke fürs mitüberlegen ...
Christian
 
Klausi2000 hat gesagt.:
Klingt ein bisschen difus ...
So ist es. Gib' mal ein paar Datensätze pro Tabelle beispielhaft an und dann das Ergebnis (kommentiert) was bei der Abfrage herauskommen soll.
Ich vermute, dass JOIN, GROUP BY, COUNT und HAVING Dein Problem lösen können.

Gruß hpvw
 
So, dann mit Daten:

Tablle1

id,cat_id

Beispiel:

'1','1920'
'1','1925'
'2','1920'
'2','1924'
'3','1920'
'3','1926'
'3','1927'
'4','1922'
'4','1923'
'4','1924'
'5','1920'
'5','1922'
'5','1929'

Tabelle 2

'id', variantId, beschreibung ..... weitere Felder

Beispiel:

1, 100, Hose blau ...
2, 100, Hose gelb ...
3, 100, Hose lila ...
4, 200, Hemd rosa ...
5, 200, Hemd türckis ...

Dabei gehören also id 1-3 sowie 5 und 5 zu einer variantId ...

1.) Ich möchte nun die Anzahl der "Vorkommen" der id's aus Tabelle2 in Tabelle 1 angezeigt bekommen, wenn aus der Gruppe mit der gleichen variantId mehr als ein Eintrag vorhanden ist ...

2.) Ich möchte nun die Anzahl der "Vorkommen" der id's aus Tabelle2 in Tabelle 1 angezeigt bekommen, wenn aus der Gruppe mit der gleichen variantId mehr als ein Eintrag zur gleichen cat_id aus Tabelle 1 vorhanden ist ...


Wird es verständlicher ;)

Danke für eure Mühe!!

Christian
 
Noch einmal zum Beispiel:

Fall1:

'1','1920'
'1','1925'
'2','1920'
'2','1924'
'3','1920'
'3','1926'
'3','1927'

würden also zu einer Gruppe gehören und eine Anzahl von 7 liefern

Fall2:

'1','1920'
'2','1920'
'3','1920'

Bedeutet, dass die artikel 1,2 und 3 mit der gleichen variantId 3 mal auf die gleichen Kategorie verweisen ...

Ich bräuchte nun ein Ergebniss was ausgibt:

variantId, cat_id, Count(*)
100, 1920, 3
....

Besser?
Christian
 
Ganz verstanden habe ich es nicht.

Zu 1:
Entweder so:
Code:
SELECT id, cat_id
FROM Tabelle1
JOIN Tabelle2 AS t2_1
  ON Tabelle2.id = Tabelle1.id
WHERE (SELECT COUNT(*)
  FROM Tabelle2 AS t2_2
  WHERE t2_1.variantId=t2_2.variantId
) > 1
oder so:
Code:
SELECT COUNT(*)
FROM Tabelle1
JOIN Tabelle2 AS t2_1
  ON Tabelle2.id = Tabelle1.id
WHERE (SELECT COUNT(*)
  FROM Tabelle2 AS t2_2
  WHERE t2_1.variantId=t2_2.variantId
) > 1
?

Zu 2:
Bin ich mir auch nicht sicher, aber:
Code:
SELECT variantId, cat_id, count(*) AS Anzahl
FROM Tabelle1
JOIN Tabelle2 AS t2_1
  ON Tabelle2.id = Tabelle1.id
GROUP BY cat_id
WHERE (SELECT COUNT(*)
  FROM Tabelle2 AS t2_2
  WHERE t2_1.variantId=t2_2.variantId
) > 1

Gruß hpvw
 
So, ich hab es mit einer abgewandelten Version1 und einer weiteren Schleife in php gearbeitet ... ist zwar eine S***-Performance, aber da das Script nur ab und an zu Wartungszwecken laufen muß nicht weiter schlimm ... wahrscheinlich wären noch 2 Subselects auch nicht schneller gewesen ... ;)

Danke noch einmal!
Christian
 

Neue Beiträge

Zurück