Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL select statement combining with different tables

Tags:

sql

sap-ase

say I have three tables: TableA, TableB, and TableC. Each of these tables have a column: ColA.

TableA is my main table and TableA.ColA has a value.

I wish to check either TableB or TableC has also a value in their ColA that corresponds with my TableA.ColA.

So my statement is:

select count(*) 
 from TableA, TableB, TableC
where ( TableA.ColA = TableB.ColA AND TableA.ColA = "ABC")  
   OR ( TableA.ColA = TableC.ColA AND TableA.ColA = "ABC" )

But this does not work.

If my TableB.ColA doesn't have a ColA value and TableC.ColA has a value, the result returned is still 0. I should get a count of 1 back.

What is wrong with my select statement?

My TableA data:

ColA
-----
ABC

My TableB data:

ColA
----
NULL

My TableC data:

ColA
----
ABC

Because TableC.ColA and TableA.ColA has the same value, it should return me a count of 1. But it is not doing so. My database is SAP ASE

thanks

like image 753
JinPangPang Avatar asked Mar 01 '26 03:03

JinPangPang


1 Answers

You are doing INNER JOIN and you need OUTER JOIN or EXISTS. Syntax will vary for RDBMS you are using.

Try this:

SELECT    COUNT(*)
    FROM
        TableA A
    WHERE
        A.ColA = "Value"
        AND (
            EXISTS(
                SELECT * FROM TableB 
                    WHERE
                        ColA = "Value"
            )
            OR EXISTS(
                SELECT * FROM TableC
                    WHERE
                        ColA = "Value"            
            )
        )
like image 63
Alex Yu Avatar answered Mar 03 '26 18:03

Alex Yu



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!