Re: outer joins

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



D Kavan wrote:

> There are 66 project id's in the project table and 3 rows in the
> project_members table for global_id 2915, but it only returns 3.  I
> would think it should return 66 rows, with 63 of them having a null
> pm.project_id.
> 
> SELECT
>       p.project_id, pm.project_id
>       FROM project p
> LEFT OUTER JOIN project_members pm ON p.project_id = pm.project_id
> where (pm.project_id is null or pm.global_id = 2915)
> 

It would return 66, if all 66 p.project_id's were _missing_ from the set
of pm.project_id's.

A "LEFT JOIN" asks for all the rows in the left-hand table (p), joined
to all the matching or missing rows in the right-hand table (pm). Then
your "WHERE" clause filters all those but the missing ones OR the ones
with global_id 2915.

You need to check on the data with something like:

select distinct project_id from project;
select distinct project_id from project_members;



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux