Laden...

[SQL] Komme mit Joins nicht weiter...

Erstellt von Timur Zanagar vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.131 Views
Timur Zanagar Themenstarter:in
1.457 Beiträge seit 2004
vor 17 Jahren
[SQL] Komme mit Joins nicht weiter...

Hallo an alle,

da ich eine (sehr sehr sehr) lange Zeit lang nicht mehr mit SQL Anweisungen gearbeitet habe, habe ich nun Schwierigkeiten eine entsprechende Anweisung zu schreiben.


SELECT
AE.belegdatum, AE.belegnr, AEPOS.artikelnr, AEPOS.text, AEPOS.menge_verbleib_le
FROM vk_beleg AS AE

INNER JOIN vk_beleg_pos AS AEPOS
ON AE.belegnr = AEPOS.belegnr

WHERE AE.belegart = 'AE'
AND AE.belegdatum > '2006-10-01'
AND AE.status_abr_verarb = 'T'
AND AEPOS.artikelnr IS NOT NULL
AND AEPOS.menge_verbleib_le > '0'

ORDER BY AE.belegdatum


SELECT
E4.belegdatum, E4POS.artikelnr
FROM vk_beleg AS E4

INNER JOIN vk_beleg_pos AS E4POS
ON E4.belegnr = E4POS.belegnr

WHERE E4.belegart = 'E4'
AND E4.belegdatum > '2006-10-01'
AND E4.status_abr_verarb = 'T'
AND E4POS.artikelnr IS NOT NULL

ORDER BY E4.belegdatum

Wie Ihr sehen könnt sind das zwei SELECT Abfragen, die aber zu einer zusammengefasst werden sollen.

Es ist wahrscheinlich etwas einfaches um mein Problem zu lösen. Die erste Anweisung soll nur einen Datensatz zurückgeben wenn die AEPOS.artikelnr in der zweiten SELECT Abfrage auch verfügbar ist.

Also AEPOS.artikelnr = E4POS.artikelnr.

Kann man das ganze JOINen? Wenn ja, wie?

Vielen Dank im Voraus.

L
497 Beiträge seit 2006
vor 17 Jahren

LEFT JOIN müsste eingetlich das sein, was Du willst.

Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.

T
433 Beiträge seit 2006
vor 17 Jahren

Hi,
du könntest z.B. mittels das ganze z.B. mittels Subselect machen


SELECT	AE.belegdatum, 
	AE.belegnr, 
	AEPOS.artikelnr, 
	AEPOS.text, 
	AEPOS.menge_verbleib_le
FROM 	vk_beleg AS AE
	INNER JOIN vk_beleg_pos AS AEPOS
	ON AE.belegnr = AEPOS.belegnr
WHERE 	AE.belegart = 'AE'
	AND AE.belegdatum > '2006-10-01'
	AND AE.status_abr_verarb = 'T'
	AND AEPOS.artikelnr IS NOT NULL
	AND AEPOS.menge_verbleib_le > '0'
	AND AEPOS.artikelnr IN
	(
		SELECT	DISTINCT E4POS.artikelnr
		FROM 	vk_beleg AS E4
			INNER JOIN vk_beleg_pos AS E4POS
			ON E4.belegnr = E4POS.belegnr
		WHERE 	E4.belegart = 'E4'
			AND E4.belegdatum > '2006-10-01'
			AND E4.status_abr_verarb = 'T'
			AND E4POS.artikelnr IS NOT NULL
	)

ORDER BY AE.belegdatum

Es fällt mir da aber auch ne Möglichkeit mit Joins ein. Du müsstest halt einfach die vk_beleg und die vk_beleg_pos noch einmal in deinem ursprünglichen Statement joinen und darauf im WHERE Ausdruck einschränken.
Dies müsste glaub ich auch klappen.

Gruß,
Tom