Even though I'm doing all this in PostgreSQL I would think it applies to 
VFP as well.

I'm not used to doing RIGHT JOIN's i.e. including everything in the 
right-side table regardless of matches in the left-side table.

Basically I want to build a list of all my sales reps and tally up their 
orders for the day. The report will get much more complicated than that 
of course but right now I'm just trying to get the list of reps to show up.

Following an example, this works just fine:

drop table test_t1;
drop table test_t2;

create table test_t1 (id int4, name varchar(10));
create table test_t2 (id int4, value int4);

insert into test_t1 (id, name) values (1, 'Matt');
insert into test_t1 (id, name) values (2, 'Joe');
insert into test_t1 (id, name) values (3, 'Bill');

insert into test_t2 (id, value) values (1, 100);
insert into test_t2 (id, value) values (2, 200);
insert into test_t2 (id, value) values (3, 300);
insert into test_t2 (id, value) values (4, 400);
insert into test_t2 (id, value) values (5, 500);

select * from test_t2 ;

select t2.value, t1.name from test_t1 t1 right join test_t2 t2 using (id);


And the results are (as I would expect):

100|"Matt"
200|"Joe"
300|"Bill"
400|""
500|""

Everything from the right-side table, with only matching records from 
the left-side.

Now my real-world example:

drop table temp_replist;

--build a list of Reps - this works fine
select r.rep, r.repid as salesrepid, m.msgentityid
into temporary temp_replist
from reps r
inner join messageentity m using (repid)
inner join messageentitygroup_ct mct on (m.msgentityid = mct.msgentityid)
where mct.msggroupid = 14 and m.isactive is true
;


select
r2.rep
,o.salesrepid
,o.orderid as Maxinv
from orders o
right join temp_replist r2 using (salesrepid)
where o.orderdate = CURRENT_DATE
and o.quote is false
and o.custid <> 2268
;


Yes, I'm doing some funky alias stuff but I've done it with strict 
naming, and also tried it using direct tables rather than temp tables as 
shown here.

I expect to see a list of 13 reps w/ nothing to the right, except for 
the couple of lines that actually do have matches. I get:

"GregT"|116|100117
"Bruno"|124|100120
"Hugh"|125|100118
"Hugh"|125|100116


The linking field (salesrepid) is the same data type (INT4).

I'm stumped. Why don't I get the whole list of reps?

TIA,


-- 
Matthew S. Jarvis
IT Manager
Bike Friday - "Performance that Packs."
www.bikefriday.com
541/687-0487 x140
[EMAIL PROTECTED]


_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/profox
OT-free version of this list: http://leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/[EMAIL PROTECTED]
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to