OK, I am not 100% sure about the inner/outer thing as I'm not really an SQL 
guy.  From what I understand, an inner is essentially the same as 
select * from booking b, performance p where b.performanceid = p.id 

or

select * from booking b
inner join performance p on b.performanceid = p.id 

whereas outer would include all the performances regardless of whether there is 
a match.

Are you saying such a sort ordering should use an outer join?  (which from my 
understanding includes all the performances whether or not they match this 
booking?)  
In this case, as PerformanceType is basically a lookup table with 3 rows, I'd 
want to sort on all the bookings on a given date, based on the booking's 
performance's performanceType, in descending order of the performanceType's 
displayOrder.

As I obviously want to be able to ask a performance what it's performanceType 
is, I'd presumably only want to match the to-one performanceType for that 
performance, and not all of them, so I'm not clear how I should change this.

My current running code:

        public NSArray<Booking> upcomingEvents() {
                NSTimestamp now = new NSTimestamp();
                EOSortOrdering dateOrdering = Booking.EVENT_DATE.asc();
                NSArray<Booking> events = 
Booking.fetchBookings(editingContext(), 
Booking.EVENT_DATE.after(now).and(Booking.EVENT_DATE.before((NSTimestamp)now.timestampByAddingGregorianUnits(0,
 0, daysAhead, 0, 0, 0))), new NSArray<EOSortOrdering>(dateOrdering));
                return events;
        }

sorts all the bookings including acts on a given date that are of 3 different 
type, but (obviously) only on eventDate (so the headliner might not appear 
above the feature, or specialEvent

While:

        public NSArray<Booking> upcomingEvents() {
                NSTimestamp now = new NSTimestamp();
                EOSortOrdering dateOrdering = Booking.EVENT_DATE.asc();
                EOSortOrdering performanceTypeOrdering =  
Booking.PERFORMANCE.dot(Performance.PERFORMANCE_TYPE.dot(PerformanceType.DISPLAY_ORDER)).desc();

                NSArray<Booking> events = 
Booking.fetchBookings(editingContext(), 
Booking.EVENT_DATE.after(now).and(Booking.EVENT_DATE.before((NSTimestamp)now.timestampByAddingGregorianUnits(0,
 0, daysAhead, 0, 0, 0))), new NSArray<EOSortOrdering>(dateOrdering, 
performanceTypeOrdering));

                return events;
        }

Sorts, appropriately, but for some reason leaves out the feature completely.

The relationship from booking -> performance is a to one, then from performance 
-> performanceType is also a to one, and the reverse relationships are all 
inner joins currently.  (e.g. I want the performance asso

On Dec 1, 2010, at 10:10 PM, Chuck Hill wrote:

> 
> On Dec 1, 2010, at 6:56 PM, Andrew R. Kinnie wrote:
> 
>> OK, well I did that, and even re-booted the machine.  No change.
>> 
>> In other news if I eliminate my second sort ordering, the previously missing 
>> booking appears.
> 
> That sounds like maybe you have a inner join where you want an outer join.
> 
> 
>> I changed it to use ERXSortOrdering and get the same result.
>> 
>> I need a beer.
> 
> Under these circumstances I'd suggest BrennivĂ­n and lots of it.  I'll leave 
> the inclusion of fermented shark to your own discretion.
> 
> 
> Chuck

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to