Podwójne odwołanie do jednej tabeli

0

Witam.

Mam tabelę z której chciałbym wyciągnąć dane wykorzystując podwójny warunek odnoszący się do tego samego pola.
Była by to suma dwóch zapytań:

SELECT * FROM pozycja WHERE PoId IN (SELECT Did FROM dokument WHERE OId=14 AND DP In (11))
  • to daje 3 wyniki
    i
SELECT * FROM pozycja WHERE PoId IN (SELECT Did FROM dokument WHERE OId=14 AND DP In (36))
  • to też daje 3 wyniki

Po połączeniu w ten sposób:

SELECT *
FROM pozycja a, pozycja b
 WHERE 
 (a.PoId IN (SELECT Did FROM dokument WHERE OId=14 AND DP In (11)))
 AND  (b.PoId  IN (SELECT Did FROM dokument WHERE OId=14 AND DP In (36)))

otrzymuje 9 wyników, a nie 6.... dlaczego ?

0

Dążę do tego żeby otrzymać sum(a.ilosc) AS A, sum(b.ilosc) AS B

0

a nie można po prostu tak?

SELECT * 
FROM pozycja p
INNER JOIN dokument d ON d.Did = p.PoId
WHERE d.OId=14 AND d.DP IN (11, 36);

BTW. Naucz się pisać JOIN-y a nie robisz jakieś podzapytania, a później kombinujesz jak koń pod górę...

0

A jeżeli chcesz uzyskać dwie odrębne sumy to moża zainteresuj się CASE:

SELECT SUM(CASE WHEN d.DP = 11 THEN p.ilosc ELSE 0 END) AS A, SUM(CASE WHEN d.DP = 36 THEN p.ilosc ELSE 0 END) AS B
FROM pozycja p
INNER JOIN dokument d ON d.Did = p.PoId
WHERE d.OId=14 AND d.DP IN (11, 36);
0

Poza tym pisz jaki silnik RDBMS (MySQL, MSSQL, Oracle), ponieważ nie jestem wróżką.

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