Praetorian46 Posted December 20, 2007 Share Posted December 20, 2007 Here is all of the info first MySQL Server version: 5.0.27 MySQL client version: 5.0.27 +------------------------+ | Tables_in_Job_Tracking | +------------------------+ | Customer_Dir | | Employee_Dir | | Job_Class | | Job_Dir | | Jobs | +------------------------+ +-----------------------------+ | Customer_Dir | +-------------+---------------+ | Customer_ID | Customer_Name | +-------------+---------------+ | 1 | Customer1 | | 2 | Customer2 | | 3 | Customer3 | +-------------+---------------+ +-----------------------------------------------------------------+ | Employee_Dir | +-------------+---------------+-------------------+---------------+ | Employee_ID | Employee_Name | Employee_Password | Employee_Type | +-------------+---------------+-------------------+---------------+ | 1 | Employee1 | CrypsPass1 | 0 | | 2 | Employee2 | CrypsPass2 | 0 | | 3 | Employee3 | CrypsPass3 | 0 | +-------------+---------------+-------------------+---------------+ +----------+-------------+ | Job_Class | +----------+-------------+ | Class_ID | Class_Name | +----------+-------------+ | 1 | Class1 | | 2 | Class2 | | 3 | Class3 | +----------+-------------+ +---------------------------------+ | Job_Dir | +--------+-------------+----------+ | Job_ID | Customer_ID | Job_Name | +--------+-------------+----------+ | 1 | 1 | 07-0001 | | 2 | 1 | 07-0002 | | 3 | 2 | 07-0003 | | 4 | 3 | 07-0004 | +--------+-------------+----------+ +-------------------------------------------------------------------------+ | Jobs | +----+--------+-------------+-------------+----------+-------+------------+ | ID | Job_ID | Customer_ID | Employee_ID | Class_ID | Hours | Date | +----+--------+-------------+-------------+----------+-------+------------+ | 1 | 1 | 1 | 1 | 1 | 1 | 2007-01-01 | | 2 | 2 | 1 | 2 | 2 | 2 | 2007-01-02 | | 3 | 3 | 2 | 3 | 3 | 3 | 2007-01-03 | +----+--------+-------------+-------------+----------+-------+------------+ There is the DB Structure and some fake data... $query = "SELECT * FROM Jobs WHERE Date BETWEEN '$SDate' AND '$EDate'"; if($Cust_ID!="") $query.= " AND Customer_ID IN ($Cust_ID)"; if($Job_ID!="") $query.= " AND Job_ID IN ($Job_ID)"; if($Empl_ID!="") $query.= " AND Employee_ID IN ($Empl_ID)"; if($Class_ID!="") $query.= " AND Class_ID IN ($Class_ID)"; There is the PHP code that I'm using... SELECT * FROM Jobs WHERE Date BETWEEN '2007-01-01' AND '2007-01-31' AND Customer_ID IN (1,2) AND Job_ID IN (2,3) AND Employee_ID IN (2,1) AND Class_ID IN (1,2) That is the query that is Generated by the code if I select certain things in the PHP Form... +----+--------+-------------+-------------+----------+-------+------------+ | ID | Job_ID | Customer_ID | Employee_ID | Class_ID | Hours | Date | +----+--------+-------------+-------------+----------+-------+------------+ | 2 | 2 | 1 | 2 | 2 | 2 | 2007-01-02 | +----+--------+-------------+-------------+----------+-------+------------+ That is what the query returns... It all works great. but what I need to do is write a query that will return the same out put but exchange the Field_IDs the the Field_Names. So it would look something like this... +----------+---------------+---------------+------------+-------+------------+ | Job_Name | Customer_Name | Employee_Name | Class_Name | Hours | Date | +----------+---------------+---------------+------------+-------+------------+ | 07-0002 | Customer1 | Employee2 | Class2 | 2 | 2007-01-02 | +----------+---------------+---------------+------------+-------+------------+ Any one have a clue of a way to do this? ??? ??? ??? ??? Thank you for your time! -Cody Quote Link to comment https://forums.phpfreaks.com/topic/82572-need-to-write-a-complex-compound-query-not-sure-how-to-start/ Share on other sites More sharing options...
roopurt18 Posted December 20, 2007 Share Posted December 20, 2007 User INNER JOINs: http://dev.mysql.com/doc/refman/5.0/en/join.html There are sample queries provided there. Quote Link to comment https://forums.phpfreaks.com/topic/82572-need-to-write-a-complex-compound-query-not-sure-how-to-start/#findComment-419762 Share on other sites More sharing options...
Praetorian46 Posted December 20, 2007 Author Share Posted December 20, 2007 User INNER JOINs: http://dev.mysql.com/doc/refman/5.0/en/join.html There are sample queries provided there. Thank you so very much for pointing me into the right direction... here is the end result and it works fast a beautifully! SELECT CD.Customer_Name, JD.Job_Name, ED.Employee_Name, JC.Class_Name, J.Hours, J.Date FROM Jobs J LEFT JOIN (Customer_Dir CD, Employee_Dir ED, Job_Class JC, Job_Dir JD) ON ( CD.Customer_ID = J.Customer_ID AND ED.Employee_ID = J.Employee_ID AND JC.Class_ID = J.Class_ID AND JD.Job_ID = J.Job_ID ) WHERE J.Date BETWEEN '2007-01-01' AND '2007-01-31' AND J.Customer_ID IN (1,2) AND J.Job_ID IN (1,2) AND J.Employee_ID IN (1,2) AND J.Class_ID IN (1,2) Quote Link to comment https://forums.phpfreaks.com/topic/82572-need-to-write-a-complex-compound-query-not-sure-how-to-start/#findComment-419986 Share on other sites More sharing options...
roopurt18 Posted December 21, 2007 Share Posted December 21, 2007 Unless you're users are allowed to delete records from customer_dir, employee_dir, job-class, and job_dir, I'm not sure why you'd be using LEFT JOIN. But if it works it works. Quote Link to comment https://forums.phpfreaks.com/topic/82572-need-to-write-a-complex-compound-query-not-sure-how-to-start/#findComment-420012 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.