2016-05-23 22 views
0

Ich versuche, eine Liste der Mitglieder (Tabelle MITGLIEDER), die während eines bestimmten Zeitraums (ein Monat) und (. ARTRANS-Tabelle) ein Produkt aus einer der drei Produktkategorien (Tabelle PRODUCTTCATS) gekauft haben dann ein Produkt dieser Kategorie in der folgenden Periode (Monat) nicht gekauft haben.Probleme beim Ausschließen von Ergebnissen aus Unterabfrage

Beide Abfragen funktionieren von selbst, aber wenn ich sie zusammenstelle, ziehe ich keine Ergebnisse. Bitte helfen!

SELECT MEMBERS.lname 
    , MEMBERS.fname 
    , MEMBERS.email 
    , PRODUCTS.scancode 
    , PRODUCTS.description 
    , ARTRANS.datetrans 
    , ARTRANS.memid 
    , ARTRANS.invoice 
    , ARTRANSITEMS.price 
    , ARTRANSITEMS.quantity 
FROM PRODUCTS 
INNER JOIN ARTRANSITEMS 
    ON PRODUCTS.productid = ARTRANSITEMS.productid 
INNER JOIN ARTRANS 
    ON ARTRANSITEMS.transid = ARTRANS.transid 
INNER JOIN PRODUCTCATS 
    ON PRODUCTS.productcatid = PRODUCTCATS.productcatid 
INNER JOIN MEMBERS 
    ON ARTRANS.memid = MEMBERS.memid 
     AND NOT EXISTS (
      SELECT M2.memid 
      FROM PRODUCTS AS P2 
      INNER JOIN ARTRANSITEMS AS ATI 
       ON P2.productid = ATI.productid 
      INNER JOIN ARTRANS AS ART2 
       ON ATI.transid = ART2.transid 
      INNER JOIN PRODUCTCATS AS PC2 
       ON P2.productcatid = PC2.productcatid 
      INNER JOIN MEMBERS AS M2 
       ON ART2.memid = M2.memid 
      WHERE (
        P2.productcatid = '20' 
        OR P2.productcatid = '21' 
        OR P2.productcatid = '78' 
        ) 
       AND (ART2.datetrans BETWEEN DATEADD(month, 1, @rvMonthOneStart) AND DATEADD(month, 1, @rvMonthOneEnd)) 
      ) 
WHERE (
     PRODUCTS.productcatid = '20' 
     OR PRODUCTS.productcatid = '21' 
     OR PRODUCTS.productcatid = '78' 
     ) 
    AND (ARTRANS.datetrans BETWEEN @rvMonthOneStart AND @rvMonthOneEnd) 
+0

Sie müssen eine Liste der Mitglieder (Frage) oder eine Liste von ARTRANSITEMS (Abfrage)? – Serg

+1

Können Sie die Abfragen getrennt anzeigen? –

Antwort

0

Try this ....

SELECT MEMBERS.lname, MEMBERS.fname, MEMBERS.email, PRODUCTS.scancode 
     , PRODUCTS.description, ARTRANS.datetrans, ARTRANS.memid 
     , ARTRANS.invoice, ARTRANSITEMS.price, ARTRANSITEMS.quantity 
FROM PRODUCTS 
INNER JOIN ARTRANSITEMS ON PRODUCTS.productid = ARTRANSITEMS.productid 
INNER JOIN ARTRANS  ON ARTRANSITEMS.transid = ARTRANS.transid 
INNER JOIN PRODUCTCATS ON PRODUCTS.productcatid = PRODUCTCATS.productcatid 
INNER JOIN MEMBERS  ON ARTRANS.memid = MEMBERS.memid 
WHERE PRODUCTS.productcatid IN ('20' ,'21','78') 
    AND (ARTRANS.datetrans BETWEEN @rvMonthOneStart AND @rvMonthOneEnd) 
AND NOT EXISTS (SELECT 1 
       FROM PRODUCTS AS P2 
       INNER JOIN ARTRANSITEMS AS ATI ON P2.productid = ATI.productid 
       INNER JOIN ARTRANS  AS ART2 ON ATI.transid = ART2.transid 
       INNER JOIN PRODUCTCATS AS PC2 ON P2.productcatid = PC2.productcatid 
       INNER JOIN MEMBERS  AS M2 ON ART2.memid = M2.memid 
       WHERE PRODUCTS.productcatid IN ('20' ,'21','78') 
        AND (ART2.datetrans BETWEEN DATEADD(month, 1, @rvMonthOneStart) AND DATEADD(month, 1, @rvMonthOneEnd)) 
        AND M2.memid = MEMBERS.memid) 
Verwandte Themen