Hi,
Please help writing the following query. There are 3 tables. I’m trying to display all records from table apptchart and matching records from appointments table as columns. I’ve pasted the table structure and some data.
Thanks in advance.
select timeslot, If(room = (select room from apptchartstaff where id = 1 and
Apptday regexp dayname(current_date)), fullname, ‘’) as Room1,
If(room = (select room from apptchartstaff where id = 2 and
Apptday regexp dayname(current_date)), fullname, ‘’) as Room2
from apptchart left join appointments on appointments.branchcode and apptchart.branchcode = ‘L’;
SET FOREIGN_KEY_CHECKS=0;
DROP DATABASE IF EXISTS test
;
CREATE DATABASE test
CHARACTER SET ‘latin1’
COLLATE ‘latin1_swedish_ci’;
USE test
;
DROP TABLE IF EXISTS appointments
;
CREATE TABLE appointments
(
ID
int(20) NOT NULL AUTO_INCREMENT,
BranchCode
varchar(1) CHARACTER SET utf8 DEFAULT NULL,
ClientCode
varchar(20) CHARACTER SET utf8 NOT NULL,
Room
varchar(20) CHARACTER SET utf8 DEFAULT NULL,
ApptDate
date NOT NULL,
ApptTime
text NOT NULL,
Reason
varchar(100) CHARACTER SET utf8 NOT NULL,
FullName
varchar(255) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (ID
)
) ENGINE=InnoDB AUTO_INCREMENT=256 DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS apptchart
;
CREATE TABLE apptchart
(
ID
int(20) NOT NULL AUTO_INCREMENT,
BranchCode
varchar(1) DEFAULT NULL,
TimeSlot
text,
PRIMARY KEY (ID
)
) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT;
DROP TABLE IF EXISTS apptchartstaff
;
CREATE TABLE apptchartstaff
(
ID
int(20) NOT NULL AUTO_INCREMENT,
BranchCode
varchar(1) NOT NULL,
ApptDay
varchar(100) DEFAULT NULL,
Room
varchar(20) NOT NULL,
PRIMARY KEY (ID
)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT;
INSERT INTO appointments
(ID
, BranchCode
, ClientCode
, Room
, ApptDate
, ApptTime
, Reason
, FullName
) VALUES
(232,‘A’,‘T396080’,‘Room2’,‘2010-09-17’,‘07:00 AM’,‘Surgery’,‘test’),
(233,‘L’,‘L5267151’,‘Room1’,‘2010-11-18’,‘08:00 AM’,‘Extended’,‘test’),
(234,‘L’,‘L5267151’,‘Room1’,‘2010-09-17’,‘08:15 AM’,‘Extended’,‘test’),
(235,‘L’,‘B5465’,‘Room2’,‘2010-09-17’,‘08:30 AM’,‘Extended’,‘test’),
(236,‘L’,‘L5267151’,‘Room2’,‘2010-09-17’,‘08:45 AM’,‘Extended’,‘test’),
(237,‘L’,‘L5267151’,‘Room2’,‘2010-09-17’,‘09:00 AM’,‘Extended’,‘test’),
(238,‘L’,‘B9522’,‘Room1’,‘2010-09-17’,‘07:15 AM’,‘Standard Consultation’,‘Caramia AARNOUDSE’),
(239,‘A’,‘O3711’,‘Room1’,‘2010-09-17’,‘07:30 AM’,‘Surgery’,‘test’),
(240,‘L’,‘B17583’,‘Room1’,‘2010-09-17’,‘08:15 AM’,‘Dental’,‘test’),
(241,‘L’,‘T396080’,‘Room2’,‘2010-09-17’,‘07:15 AM’,‘Extended’,‘test’),
(242,‘L’,‘T396080’,‘Room2’,‘2010-09-17’,‘07:30 AM’,‘Extended’,‘test’),
(243,‘L’,‘O3711’,‘Room1’,‘2010-09-17’,‘07:45 AM’,‘Extended’,‘test’),
(244,‘L’,‘L5267151’,‘Room1’,‘2010-09-17’,‘08:15 AM’,‘Extended’,‘test’),
(245,‘L’,‘L5267151’,‘Room1’,‘2010-09-17’,‘08:30 AM’,‘Extended’,‘test’),
(246,‘L’,‘L5267151’,‘Room1’,‘2010-09-17’,‘08:45 AM’,‘Extended’,‘test’),
(247,‘L’,‘L5267151’,‘Room1’,‘2010-09-17’,‘09:00 AM’,‘Extended’,‘test’),
(248,‘L’,‘b17583’,‘Room1’,‘2010-10-26’,‘07:00 AM’,‘Standard Consultation’,‘rex SMITH’),
(250,‘L’,‘B9522’,‘Room1’,‘2010-10-27’,‘07:00 AM’,‘Standard Consultation’,‘Caramia AARNOUDSE’),
(251,‘L’,‘O9254976’,‘Room2’,‘2010-10-27’,‘07:30 PM’,‘Standard Consultation’,‘test’),
(252,‘L’,‘B36’,‘Room1’,‘2010-11-04’,‘07:00 AM’,‘Dental’,‘test’),
(253,‘L’,‘B9522’,‘Room1’,‘2010-10-27’,‘07:15 AM’,‘Extended’,‘Caramia AARNOUDSE’);
COMMIT;
INSERT INTO apptchart
(ID
, BranchCode
, TimeSlot
) VALUES
(1,‘L’,‘07:00 AM’),
(2,‘L’,‘07:15 AM’),
(3,‘L’,‘07:30 AM’),
(4,‘L’,‘07:45 AM’),
(5,‘L’,‘08:00 AM’),
(6,‘L’,‘08:15 AM’),
(7,‘L’,‘08:30 AM’),
(8,‘L’,‘08:45 AM’),
(9,‘L’,‘09:00 AM’),
(10,‘L’,‘09:15 AM’),
(11,‘L’,‘09:30 AM’),
(12,‘L’,‘09:45 AM’),
(13,‘L’,‘10:00 AM’),
(14,‘L’,‘10:15 AM’),
(15,‘L’,‘10:30 AM’),
(16,‘L’,‘10:45 AM’),
(17,‘L’,‘11:00 AM’),
(18,‘L’,‘11:15 AM’),
(19,‘L’,‘11:30 AM’),
(20,‘L’,‘11:45 AM’),
(21,‘L’,‘12:00 PM’),
(22,‘L’,‘12:15 PM’),
(23,‘L’,‘12:30 PM’),
(24,‘L’,‘12:45 PM’),
(25,‘L’,‘01:00 PM’),
(26,‘L’,‘01:15 PM’),
(27,‘L’,‘01:30 PM’),
(28,‘L’,‘01:45 PM’),
(29,‘L’,‘02:00 PM’),
(30,‘L’,‘02:15 PM’),
(31,‘L’,‘02:30 PM’),
(32,‘L’,‘02:45 PM’),
(33,‘L’,‘03:00 PM’),
(34,‘L’,‘03:15 PM’),
(35,‘L’,‘03:30 PM’),
(36,‘L’,‘03:45 PM’),
(37,‘L’,‘04:00 PM’),
(38,‘L’,‘04:15 PM’),
(39,‘L’,‘04:30 PM’),
(40,‘L’,‘04:45 PM’),
(41,‘L’,‘05:00 PM’),
(42,‘L’,‘05:15 PM’),
(43,‘L’,‘05:30 PM’),
(44,‘L’,‘05:45 PM’),
(45,‘L’,‘06:00 PM’),
(46,‘L’,‘06:15 PM’),
(47,‘L’,‘06:30 PM’),
(48,‘L’,‘06:45 PM’),
(49,‘L’,‘07:00 PM’),
(50,‘L’,‘07:15 PM’),
(51,‘L’,‘07:30 PM’),
(52,‘L’,‘07:45 PM’),
(53,‘L’,‘08:00 PM’);
COMMIT;
INSERT INTO apptchartstaff
(ID
, BranchCode
, ApptDay
, Room
) VALUES
(1,‘L’,‘Sunday\rMonday\rTuesday\rWednesday\rThursday\rFriday \rSaturday’,‘Room1’),
(2,‘L’,‘Sunday\rMonday\rTuesday\rWednesday\rThursday\rFriday \rSaturday’,‘Room2’);
COMMIT;