在postgresql中我有4个表
Table A:
-----------
a_id
a_date
Table B
-----------
a_id b_id
Table C:
-------------------
c_id
b_id
invoice_number
Table D
-------------------
d_id
invoice_number
value_D
多条记录的值为
我想选择表A,表B,表C和表D,其中a_date在X和Y之间。 但是,我还想选择我的选择中未包含的所有其他值_(所以A innerjoin B innerjoin C full outerjoin D)
我的代码
SELECT
Table A, Table B, Table C, Table D
FROM
Table A
JOIN
Table B ON A.a_id = B.a_id
JOIN
Table C ON B.b_id = C.b_id
FULL OUTER JOIN
Table D ON C.invoice_number = D.invoice_number
WHERE
A.a_date BETWEEN X AND Y;
它只显示A.a_id的D.value_d,其中A.a_date BETWEEN X和Y. 不过我想也可以为A.a_id显示D.value_d,其中A.a_date也是其他。
我是一个新手,所以希望这是可以理解的,你可以帮助我。
提前致谢
答案 0 :(得分:0)
您还可以向Where子句添加更多条件,例如: " a_date BETWEEN X和Y或a_date> ' 2015年4月21日'&#34 ;.这将检索两个条件的并集。
此致
答案 1 :(得分:0)
我想我解决了它。
SELECT Table A, Table B, Table C, Table D
FROM Table A
JOIN Table B ON A.a_id = B.a_id
JOIN Table C ON B.b_id = C.b_id
JOIN Table D ON C.invoice_number = D.invoice_number
WHERE A.a_date BETWEEN X AND Y OR
D.value_D IN (SELECT D.value_D
FROM Table D
JOIN Table C ON D.invoice_number on C.invoice_number
JOIN Table B ON C.b_id = B.b_id
JOIN Table A ON B.a_id = A.a_id
WHERE A.a_date BETWEEN X AND Y);
谢谢大家的帮助!