Jak dodać odpowiednie dane z drugiej tabeli ?

0

Witajcie, pomoże ktoś do gotowej tabeli nr.1 dodać odpowiednie dane z tabeli nr.2 ? Potrzebne są dane z kolumn DATA_2, GODZ_2, VL, IL_2, LOG. Dane powinny być wyszukiwane na podstawie wspólnych kolumn REF i ART.
zapytanie tabela nr.1

SELECT
LEFT(RIGHT('00000000' || RECE.DTMREC, 8), 4) || '-' || SUBSTRING(RIGHT('00000000' || RECE.DTMREC, 8), 5, 2) || '-' || RIGHT(RIGHT('00000000' || RECE.DTMREC, 8), 2) AS DATA_1
,LEFT(RIGHT('0000' || RECE.HEMREC, 4), 2) || ':' || RIGHT(RIGHT('0000' || RECE.HEMREC, 4), 2) || ':00' AS GODZ_1
,LIVD.FAMPRO AS SEG
,LIVD.REFREC AS REF
,RECE.NOMFOU AS FIR
,LIVD.ETALIV AS STATUS_X
,LIVD.CODACT AS AKT
,PIC.CIRPIC AS OB
,LIVD.CODPRO AS ART
,SUM(LIVD.UVCCDE/LIVD.PCBPRO) AS IL_1
,CASE WHEN RECE.ETAREC = '10' THEN 'A'
WHEN RECE.ETAREC = '20' THEN 'B'
WHEN RECE.ETAREC = '30' THEN 'C'
WHEN RECE.ETAREC = '50' THEN 'D'
ELSE '' END AS STATUS_Y
FROM BIBLIOTEKA.GELIVD AS LIVD
JOIN BIBLIOTEKA.GEPIC AS PIC ON PIC.CODPRO = LIVD.CODPRO AND PIC.CODACT = LIVD.CODACT AND PIC.VALPRO = LIVD.VALPRO
JOIN BIBLIOTEKA.GERECE AS RECE ON LIVD.REFREC = RECE.REFREC
JOIN BIBLIOTEKA.GELIVE AS LIVE ON RECE.REFREC = LIVE.CRILIV AND LIVE.NUMLIV = LIVD.NUMLIV
WHERE RECE.DTMREC BETWEEN ? AND ?
AND LIVD.REFREC !=''
AND PIC.ZONPIC = 'V'
GROUP BY RECE.DTRREC, RECE.HERREC, LIVD.FAMPRO, LIVD.REFREC, RECE.NOMFOU, LIVD.ETALIV, LIVD.CODACT, PIC.CIRPIC, LIVD.CODPRO, RECE.ETAREC
ORDER BY GODZ_1, DATA_1

zapytanie tabela nr.2

SELECT
LEFT(RIGHT('00000000' || RECP.DATREC, 8), 4) || '-' || SUBSTRING(RIGHT('00000000' || RECP.DATREC, 8), 5, 2) || '-' || RIGHT(RIGHT('00000000' || RECP.DATREC, 8), 2) AS DATA_2
,MAX(LEFT(RIGHT('000000' || RECP.HEUREC, 6), 2) || ':' || SUBSTRING(RIGHT('000000' || RECP.HEUREC, 6), 3, 2) || ':' || RIGHT(RIGHT('000000' || RECP.HEUREC, 6), 2)) AS GODZ_2
,RECP.REFREC AS REF
,RECP.CODPRO AS ART
,RECP.CODACT AS AKT
,RECP.VALPRO AS VL
,SUM(RECP.UVCMVT / RECP.PCBPRO) AS IL_2
,RECP.CODRCN AS LOG
FROM BIBLIOTEKA.GERECP AS RECP
WHERE RECP.DATREC BETWEEN ? AND ?
AND RECP.ZONSTS ='V'
GROUP BY RECP.DATREC, RECP.REFREC, RECP.CODPRO, RECP.CODACT, RECP.VALPRO, RECP.CODRCN

0

Poprosimy o więcej wyjaśnień.
Chcesz połączyć dane z dwóch tabel, których dotyczą wklejone przez Ciebie zapytania, czy może połączyć wyniki tych dwóch zapytań ?

0

Sorki, tak chodzi o wyniki z drugiej tabeli, które po znalezieniu wspólnych rekordów w danym wierszu (REF i ART) zostaną dodane w kolejnych wolnych kolumnach pierwszego zapytania, a jeśli ich nie znajdą to komórki powinny zostać puste

1

No to trzeba left joina zrobić:

SELECT
	LEFT(RIGHT('00000000' || RECE.DTMREC, 8), 4) || '-' || SUBSTRING(RIGHT('00000000' || RECE.DTMREC, 8), 5, 2) || '-' || RIGHT(RIGHT('00000000' || RECE.DTMREC, 8), 2) AS DATA_1
	,LEFT(RIGHT('0000' || RECE.HEMREC, 4), 2) || ':' || RIGHT(RIGHT('0000' || RECE.HEMREC, 4), 2) || ':00' AS GODZ_1
	,LIVD.FAMPRO AS SEG
	,LIVD.REFREC AS REF
	,RECE.NOMFOU AS FIR
	,LIVD.ETALIV AS STATUS_X
	,LIVD.CODACT AS AKT
	,PIC.CIRPIC AS OB
	,LIVD.CODPRO AS ART
	,SUM(LIVD.UVCCDE/LIVD.PCBPRO) AS IL_1
	,CASE 
		WHEN RECE.ETAREC = '10' THEN 'A'
		WHEN RECE.ETAREC = '20' THEN 'B'
		WHEN RECE.ETAREC = '30' THEN 'C'
		WHEN RECE.ETAREC = '50' THEN 'D'
		ELSE '' 
	END AS STATUS_Y
	,DATA_2
	,GODZ_2 
FROM 
	BIBLIOTEKA.GELIVD AS LIVD
	JOIN BIBLIOTEKA.GEPIC AS PIC ON PIC.CODPRO = LIVD.CODPRO AND PIC.CODACT = LIVD.CODACT AND PIC.VALPRO = LIVD.VALPRO
	JOIN BIBLIOTEKA.GERECE AS RECE ON LIVD.REFREC = RECE.REFREC
	JOIN BIBLIOTEKA.GELIVE AS LIVE ON RECE.REFREC = LIVE.CRILIV AND LIVE.NUMLIV = LIVD.NUMLIV
	LEFT JOIN (SELECT
					LEFT(RIGHT('00000000' || RECP.DATREC, 8), 4) || '-' || SUBSTRING(RIGHT('00000000' || RECP.DATREC, 8), 5, 2) || '-' || RIGHT(RIGHT('00000000' || RECP.DATREC, 8), 2) AS DATA_2
					,MAX(LEFT(RIGHT('000000' || RECP.HEUREC, 6), 2) || ':' || SUBSTRING(RIGHT('000000' || RECP.HEUREC, 6), 3, 2) || ':' || RIGHT(RIGHT('000000' || RECP.HEUREC, 6), 2)) AS GODZ_2
					,RECP.REFREC AS REF
					,RECP.CODPRO AS ART
					,RECP.CODACT AS AKT
					,RECP.VALPRO AS VL
					,SUM(RECP.UVCMVT / RECP.PCBPRO) AS IL_2
					,RECP.CODRCN AS LOG
				FROM 
					BIBLIOTEKA.GERECP AS RECP
				WHERE 
					RECP.DATREC BETWEEN ? AND ?
					AND RECP.ZONSTS ='V'
				GROUP BY 
					RECP.DATREC
					, RECP.REFREC
					, RECP.CODPRO
					, RECP.CODACT
					, RECP.VALPRO
					, RECP.CODRCN) r2 on LIVD.ART = r2.ART and LIVD.REF = r2.REF 
WHERE 
	RECE.DTMREC BETWEEN ? AND ?
	AND LIVD.REFREC !=''
	AND PIC.ZONPIC = 'V'
GROUP BY 
	RECE.DTRREC
	, RECE.HERREC
	, LIVD.FAMPRO
	, LIVD.REFREC
	, RECE.NOMFOU
	, LIVD.ETALIV
	, LIVD.CODACT
	, PIC.CIRPIC
	, LIVD.CODPRO
	, RECE.ETAREC
	, DATA_2
	, GODZ_2 
ORDER BY 
	GODZ_1
	, DATA_1

1 użytkowników online, w tym zalogowanych: 0, gości: 1