Micha: Abfrage über 3 Tabellen

Hallo,

ich habe ein Abfrageproblem
die Abfrage geht über 3 Tabellen
content, sub1 und sub2
in der haupt habe ich Artikel
classe#artikelcode#bezeichnung# der code und die bezeichnung kommen hier nur einmal vor
Artikel#A1 # Artikel_1
Artikel#A2# Artikel_2
Gruppe#G1#Name der Gruppe1
Gruppe#G2#Name der Gruppe2
in der sub1 habe ich die Gruppen den die Artikel zugeordnet wurden
Gruppe#Artikel#
G1#A1
G1#A2
G1#A3
G1#A4
G2#A5
in der sub2 dann sie Verknüfung zur Anzeige
Anzeige#Artikel_sub2
irgendwas#A2
irgendwas#A2
irgendwas#A3

Mit meinem Wissen bekomme ich eine Abfrage hin die mir Zeigt welche Gruppen zum Artikel gehören
Select content.bez, content.artikelcode
From content, sub1
Where content.artikelcode = sub1.artikel

Wie bekomme ich das aber hin das ich auch die Daten von der Tabelle sub2 in meine Abfrage bekomme mit einem cont Feld das mir die Artikel in der sub2 zählt
Wenn A1 nicht in der Sub2 aufgeführt wird soll es aber  trotzdem erscheinen mit Count 0

Artikel #A1 # Artikel_1# G1# count 0
Artikel #A2 # Artikel_2# G1# count 2

Ist das irgendwie machbar
Vielen Dank
Micha

  1. Hallo Micha,

    Deine grausame Schreibweise macht das Lesen und Verstehen Deines Anliegens leider sehr schwer.

    content, sub1 und sub2

    Wähle doch bitte aussagekräftigere Namen, Du machst Dir selbst und anderen das Leben leichter. Gleiches gilt für Deine Spaltennamen. Du kannst Spalten in verschiedenen Tabellen gleich benennen, das ist in Deinem Fall sogar sinnvoll.

    in der haupt habe ich Artikel

    ich nehme mal an, dass gilt: haupt = content :-)

    classe#artikelcode#bezeichnung# der code und die bezeichnung kommen hier nur einmal vor

    So fände ich das wesentlich lesbarer:

    Classe   Artikelcode  Bezeichnung
    ---------------------------------
    Artikel  A1           Artikel_1
    Artikel  A2           Artikel_2


    Gruppe  G1  Name der Gruppe1
    Gruppe  G2  Name der Gruppe2

    in der sub1 habe ich die Gruppen den die Artikel zugeordnet wurden

    Gruppe  Artikel

    G1      A1
    G1      A2
    G1      A3
    G1      A4
    G2      A5

    Kommt jeder Artikel nur in einer Gruppe vor? So scheint es. Und dann gilt:

    Die Tabelle sub1 kommt mir (ausnahmsweise) überflüssig vor, Du könntest diese Information ohne Verlust und ohne Redundanz in Deine Tabelle haupt/content mit aufnehmen

    in der sub2 dann sie Verknüfung zur Anzeige
    Anzeige    Artikel_sub2

    irgendwas  A2
    irgendwas  A2
    irgendwas  A3

    Mit meinem Wissen bekomme ich eine Abfrage hin die mir Zeigt welche Gruppen zum Artikel gehören

      
    
    > Select content.bez, content.artikelcode  
    > From content, sub1  
    > Where content.artikelcode = sub1.artikel  
    
    

    Besser formulierst Du dies als JOIN, denn es ist ein JOIN. (Siehe dazu auch https://forum.selfhtml.org/?t=119395&m=766062, ein Vorblick auf die Featureartikel von Rouven und mir zu Joins.)

      
    SELECT  
      bez,  
      artikelcode  
    FROM content  
    INNER JOIN sub1  
    ON content.artikelcode = sub1.artikel  
    
    

    Wie bekomme ich das aber hin das ich auch die Daten von der Tabelle sub2 in meine Abfrage bekomme mit einem cont Feld das mir die Artikel in der sub2 zählt

    Bevor Du anfängst zu zählen, solltest Du zuerst alle Spalten zusammenbringen und

    Wenn A1 nicht in der Sub2 aufgeführt wird soll es aber  trotzdem erscheinen mit Count 0

    mit dieser Bedingung verlangst Du einen LEFT JOIN :-) (steht alles in den neuen Feature-Artikeln)

      
    SELECT  
      Bez,  
      Artikelcode,  
      Gruppe,  
      sub2.artikel_sub2  
    FROM (content  
    INNER JOIN sub1  
    ON content.artikelcode = sub1.artikel)  
    LEFT OUTER JOIN sub2  
    ON content.artikelcode = sub2.artikel_sub2  
    
    

    Da die Bezeichnung und die Gruppe eindeutig vom Artikelcode abhängen kannst Du wunderbar danach gruppieren und die Spalte sub2.artikel_sub2 zählen :-)

    Artikel #A1 # Artikel_1# G1# count 0
    Artikel #A2 # Artikel_2# G1# count 2

      
    SELECT  
      Artikelcode,  
      Bez,  
      Gruppe,  
      COUNT(artikel_sub2) AS Anzahl -- gib der Spalte einen Namen  
    FROM (content  
    INNER JOIN sub1  
    ON content.artikelcode = sub1.artikel)  
    LEFT OUTER JOIN sub2  
    ON content.artikelcode = sub2.artikel_sub2  
    GROUP BY Artikelcode, Bez, Anzeige, Gruppe  
    
    

    Ist das irgendwie machbar

    sollte es tun, auch wenn es nicht getestet ist.

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      Deine grausame Schreibweise macht das Lesen und Verstehen Deines Anliegens leider sehr schwer.

      Sorry, das tut mir leid, ich wusste nicht wie ich mich ausdrücken sollte.
      Deine Antwort hat mir sehr geholfen.

      Was echt cool ist, du hast es erklärt, so das ich es verstanden habe.

      Vielen Dank
      Miche