-----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