Thank you very much for all the insightful replies. I think I can get it to 
work with a join.  


---- Joerg Bruehe <joerg.bru...@sun.com> wrote:
>
> Hi!
> 
> 
> Jay Blanchard wrote:
> > [snip]
> > I have a table similar to this:
> > 
> >  -------------------------
> > |transactions             |
> > |ID   |DATE      |EMPLOYEE|
> > |234  |2010-01-05| 345    |
> > |328  |2010-04-05| 344    |
> > |239  |2010-01-10| 344    |
> > 
> > Is there a way to query such a table to give the days of the year that
> > employee 344 did not have a transaction?
> > [/snip]
> > 
> > SELECT DATE
> > FROM transactions
> > WHERE EMPLOYEE != '344'
> > GROUP BY DATE;
> 
> I strongly doubt this will work - what if several employees have
> transactions on the same day?
> 
> No, what the poster effectively needs is a set difference:
> Take the set of all candidate dates, and subtract the set of days on
> which the employee in question did have a transaction.
> 
> The first difficulty will be to construct the set of candidate dates, as
> this needs a decision what to do about non-working dates (weekends,
> public holidays, ...) and how to determine them - depending on the
> business logic, that set may be specific to the employee (personal
> vacation!).
> 
> Only when this has been decided, there is the question how to implement
> the set difference:
> - SQL "minus" is a candidate, but MySQL doesn't support that AFAIK.
> - Outer Join is the other possibility, as proposed by Gavin.
> - Having all candidate dates in some temporary table and then deleting
>   those with a transaction is another way, but probably very slow.
>   (The advantage of this might be that it is the most flexible way.)
> 
> 
> Jörg
> 
> -- 
> Joerg Bruehe,  MySQL Build Team,  joerg.bru...@sun.com
> Sun Microsystems GmbH,   Komturstrasse 18a,   D-12099 Berlin
> Geschaeftsfuehrer: Juergen Kunz
> Amtsgericht Muenchen: HRB161028
> 
> 

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to