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.
LEFT JOIN müsste eingetlich das sein, was Du willst.
Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.
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