2017-09-14 3 views
0

Ich bin sehr (sehr) neu in der Programmierung und ich möchte zwei Tabellen zu verbinden. Wenn ich die Abfragen getrennt mache, funktioniert es, aber ich habe Probleme beim Beitritt. Hier ist, was ich bisher tat:Join Tabellen mit unterschiedlichen Zeiten

SELECT DISTINCT(MCH_CODE) as Machine, COUNT(SELL) AS Sells 
FROM SELLS 
WHERE STATUS = 'SOLD' AND SUBCODE = 'T' 
AND TIME >='2017-09-14 07:00:00' and STORE_CODE ='A101' 
GROUP BY MCH_CODE 

Die zweite:

SELECT DISTINCT(MCH_CODE) as Machine, COUNT(BARCODES) AS Scanned 
FROM SCANNED_TABLE 
WHERE TIME_STAMP >= '2017-09-14 07:00:00' AND STORE_CODE ='A101' 
GROUP BY MCH_CODE 

Und das ist, was ich bisher habe:

SELECT DISTINCT (dc.MCH_CODE) as Machine, COUNT(dc.SELL) AS Sells, COUNT(BARCODES) AS Scanned 
FROM SELLS AS dc 
INNER JOIN SCANNED_TABLE AS tr 
ON dc.STORE_CODE = tr.STORE_CODE 
WHERE dc.STATUS = 'SOLD' AND dc.SUBCODE = 'T' 
AND dc.TIME >='2017-09-14 07:00:00' and dc.STORE_CODE ='A101' 
GROUP BY dc.MCH_CODE 

Ich sollte so etwas wie Maschine Verkauft erhalten Gescannt, aber wenn ich mich den Tabellen anschließe, sind die Werte nicht gleich. Ist es wegen der Zeiten? Wie kann man die Tische richtig betreten?

+0

Die 'distinct' Begriff hier nicht notwendig sind, Ihre Ergebnisse, da Sie Gruppe, die in der Tat Sie unterschiedliche Ergebnisse liefern, egal, wenn Sie das Stichwort oder nicht verwenden. – ssn

+0

Sie haben unterschiedliche Bedingungen zwischen der Tow-Abfrage in den ersten Sie haben WHERE STATUS = 'VERKAUFT' UND SUBCODE = 'T' in der zweiten NICHT – scaisEdge

+0

'DISTINCT' ist * nicht * eine Funktion, es ist ein Teil von' SELECT DISTINCT' und arbeitet an den gesamten ausgewählten Zeilen. Entfernen Sie diese überflüssigen Klammern! (ZB "SELECT DISTINCT dc.MCH_CODE als Maschine, ...'.) " – jarlh

Antwort

1

Sie haben bereits alles, was Sie brauchen, und können sie als Subqueries

SELECT t1.Machine, t1.Sells, t2.Scanned 
FROM 
    (SELECT MCH_CODE as Machine, COUNT(SELL) AS Sells 
    FROM SELLS 
    WHERE STATUS = 'SOLD' AND SUBCODE = 'T' 
    AND TIME >='2017-09-14 07:00:00' and STORE_CODE ='A101' 
    GROUP BY MCH_CODE) t1 
    INNER JOIN 
    (SELECT MCH_CODE as Machine, COUNT(BARCODES) AS Scanned 
    FROM SCANNED_TABLE 
    WHERE TIME_STAMP >= '2017-09-14 07:00:00' AND STORE_CODE ='A101' 
    GROUP BY MCH_CODE) t2 ON t1.Machine=t2.Machine 
0

Versuchen Sie, die beiden Aussagen miteinander zu verbinden verbinden, anstatt die Schaffung einer kombinierten beizutreten.

Try this:

SELECT 
    * 
FROM 
(
SELECT 
    MCH_CODE AS Machine 
    ,STORE_CODE 
    ,COUNT(SELL) AS Sells 
FROM 
    SELLS 
WHERE 
    STATUS = 'SOLD' 
    AND SUBCODE = 'T' 
    AND TIME >= '2017-09-14 07:00:00' 
    AND STORE_CODE = 'A101' 
GROUP BY 
    MCH_CODE 
) AS A 
INNER JOIN (
SELECT 
    MCH_CODE AS Machine 
    ,STORE_CODE 
    ,COUNT(BARCODES) AS Scanned 
FROM 
    SCANNED_TABLE 
WHERE 
    TIME_STAMP >= '2017-09-14 07:00:00' 
    AND STORE_CODE = 'A101' 
GROUP BY 
    MCH_CODE 
) AS B ON A.STORE_CODE = B.STORE_CODE AND A.Machine = B.Machine 
Verwandte Themen