Thread: right join problem

right join problem

From
Greenhorn
Date:
Hi,

I'm trying to retrieve all meter_id from table meter, and for meter_id
without amount, I'd like it to show nothing, 'null'.  I've used right
join here but it's not giving me my desired result.  Is there another
way to do this?  Here's the query I'm trying.

Thanks in advance!

select m.meter_id, mp.meter_id, sum(amount_in_cents) as am
from meter m
right join transaction_mpark mp on (m.meter_id = mp.meter_id)
where date_time between '2009-09-28 00:00:00' and '2009-10-04 23:59:59'
group by m.meter_id, mp.meter_id
order by m.meter_id


Re: right join problem

From
"A. Kretschmer"
Date:
In response to Greenhorn :
> Hi,
> 
> I'm trying to retrieve all meter_id from table meter, and for meter_id
> without amount, I'd like it to show nothing, 'null'.  I've used right
> join here but it's not giving me my desired result.  Is there another
> way to do this?  Here's the query I'm trying.
> 
> Thanks in advance!
> 
> select m.meter_id, mp.meter_id, sum(amount_in_cents) as am
> from meter m
> right join transaction_mpark mp on (m.meter_id = mp.meter_id)
> where date_time between '2009-09-28 00:00:00' and '2009-10-04 23:59:59'
> group by m.meter_id, mp.meter_id
> order by m.meter_id

Use a left join instead?

test=*# select * from master;id |   name
----+---------- 1 | master 1 2 | master 2
(2 rows)

test=*# select * from slave;id | value
----+------- 1 |     1 1 |     2 1 |     3
(3 rows)

test=*# select m.id, s.id, sum(s.value) from master m right join slave s on (m.id=s.id) group by m.id, s.id;id | id |
sum
----+----+----- 1 |  1 |   6
(1 row)

test=*# select m.id, s.id, sum(s.value) from master m left join slave s on (m.id=s.id) group by m.id, s.id;id | id |
sum
----+----+----- 1 |  1 |   6 2 |    |
(2 rows)


Andreas
-- 
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)


Re: right join problem

From
"A. Kretschmer"
Date:
In response to Greenhorn :
> >
> > Use a left join instead?
> Hi,
> Yes, but when i use a where clause on my query it only selects joined
> records.  :(
> Thanks.

Please, answer to the list and not directly to me.

The WHERE-Clause works after the JOIN - so your select contains (without
the WHERE) all rows.

Maybe i don't understand you, can you show a simple example with data?


Andreas
-- 
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)