-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi, all --

I need, I think, some pointers to basic JOIN tutorials.  I don't really
know how to approach this query.  I should say early on that I don't
expect the list to write my code for me, though any help anyone can send
is VERY much appreciated; rather, I don't even know where to look to do
the required reading :-)

I have a schedule table that looks like

  create table schedule
  (
    # ID number
    id smallint not null default 0 auto_increment primary key ,
    class smallint not null ,   # references classtypes.id
    client smallint not null ,  # references client.id
    instr smallint not null ,   # references personnel.id
    place smallint not null ,   # references places.id
    timeslot datetime not null ,        # when
    #unique (timeslot,client) , # no double-bookings
    #unique (timeslot,instr) ,  # no double-bookings
    index (timeslot,client) ,   # no double-bookings
    index (timeslot,instr) ,    # no double-bookings
    index (timeslot,place) ,    # cannot be unique 'cuz of group classes
    cancelled datetime not null # cancelled? when?
  ) ;

that holds my bookings.  Classes can be either private (one client) or
group (some number N, though perhaps only 1 client will sign up).

I started out, as you can see, with unique indexes for the client and
instructor, but since I had the brilliant idea of creating some N rows
for a group class, all with empty client fields, that doesn't work.  I'm
not so worried about that; it just means that I'm going to have to do
some work on my own to ensure no double-bookings (except for a group
class).  [OK, so maybe it wasn't that brilliant; better approaches will
be heard with avid interest.  But it worked in my *head*! :-]

Then I had the idea of using client id '0', which will never occur in the
client table (create table clients ( id smallint unsigned not null
default 0 auto_increment primary key , ...);), as a way to black out a
time slot so that the instructor can be guaranteed a lunch break or so.
That's where my problem really came up.

Thinking at first only of an instructor and single clients I came up with
(deep breath)

  select substring(s.timeslot,1,13) , concat(c.fname,' ',c.lname) from personnel as i 
, clients as c , schedule as s where i.id = s.instr and c.id = s.client and i.fname = 
'penelope' order by timeslot;

which gives me a lovely

  +----------------------------+-----------------------------+
  | substring(s.timeslot,1,13) | concat(c.fname,' ',c.lname) |
  +----------------------------+-----------------------------+
  | 2002-12-27 06              | david t-g                   |
  | 2002-12-27 07              | david t-g                   |
  | 2002-12-27 10              | david t-g                   |
  | 2002-12-27 11              |  harmon                     |
  | 2002-12-27 13              | larry thorburn              |
  +----------------------------+-----------------------------+

and I write my table in php without a second thought.  Then, however,
comes the mess of pulling out any records where the client id is 0; for
every timeslot like that, I get a row for each client in the clients
table!

Here's where I'm really swamped.  I can write a separate query for
schedule records where the client is 0, and I can write a separate query
for schedule records where the class is not private, but how can I
combine all three to get one lovely result to use to build my table?


TIA & HAND & Happy New Year

mysql query,
:-D
- -- 
David T-G                      * There is too much animal courage in 
(play) [EMAIL PROTECTED] * society and not sufficient moral courage.
(work) [EMAIL PROTECTED]  -- Mary Baker Eddy, "Science and Health"
http://justpickone.org/davidtg/      Shpx gur Pbzzhavpngvbaf Qrprapl Npg!

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (FreeBSD)

iD8DBQE+ExYNGb7uCXufRwARAp0EAJ9a5C3emiflZGtuiXPOcWnMJo7iXQCeKVMw
0w2kNXILUltbWs/rxUwG22E=
=kYIn
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to