Ok, I am migrating a database from SQL Server 7.0 to Oracle8.0.5.1 Enterprise Edition on Linux. I have all the tables moved over, and now I am working on the various views that were part of the SQL Server schema.<br>
<br>
I have come across a massive view built from about 8 JOINS (inner, outer, and left outer) and of course SQL Server supports keywords like 'INNER JOIN' and 'LEFT OUTTER JOIN' which Oracle does not have. So I need some help with figuring out these joins. (I have been reading on the subject for 3 days and have bought about $130 worth of books on SQL and Oracle SQL and still am unsure of how to do this)<br>
<br>
Here is the original select statement that defines the view from SQL Server:<br>
<br>
SELECT a.Company_RecID, <br>
a.Activity_RecID, <br>
a.Category_ID, <br>
a.Date_Entered, <br>
a.Urgency_ID, <br>
a.Activity_Action_ID, <br>
aa.Description, <br>
tm.Assign_To, <br>
tm.Assigned_By, <br>
a.Activity_Board_RecID, <br>
aa.Sort_Order, cc.Short_Name, <br>
c.Company_ID, <br>
tm.To_List_Flag, <br>
tm.By_List_Flag, <br>
a.Subject, <br>
tm.Default_Flag, <br>
tm.Priority, <br>
a.Date_Required, <br>
a.Closed_Flag, <br>
a.Project_RecID, <br>
Project.Project_ID, <br>
Activity_Urgency_Code.Color, <br>
Activity_Urgency_Code.Description AS UC_Desc, <br>
Activity_Urgency_Code.Sort_Order AS UC_sort_order, <br>
a.First_Name, <br>
a.Last_Name, <br>
c.Company_Name<br>
FROM Activity a INNER JOIN<br>
Activity_Action aa ON <br>
a.Activity_Action_ID = aa.Activity_Action_ID <br>
INNER JOIN Task_Manager tm ON <br>
a.Activity_RecID = tm.Activity_RecID <br>
INNER JOIN Company_Category cc ON <br>
a.Company_RecID = cc.Company_RecID AND <br>
a.Category_ID = cc.Category_ID <br>
INNER JOIN<br>
Company c ON a.Company_RecID = c.Company_RecID AND <br>
cc.Company_RecID = c.Company_RecID <br>
LEFT OUTER JOIN<br>
Activity_Urgency_Code ON <br>
a.Urgency_ID = Activity_Urgency_Code.Urgency_ID <br>
LEFT OUTER JOIN<br>
Project ON a.Project_RecID = Project.Project_RecID<br>
<br>
So now how do I go about recreating this in the SQL that Oracle supports. From what I have learned so far, I am gonna try and create several smaller views to build upon to create the final view.<br>
<br>
What is more performance oriented? Dumping all the SQL in one view and letting the optimizer figure it out, or creating multiple smaller views and joining those views together to create a larger view?<br>
<br>
Thanks in advance for the help,<br>
--Bryan
<br>
I have come across a massive view built from about 8 JOINS (inner, outer, and left outer) and of course SQL Server supports keywords like 'INNER JOIN' and 'LEFT OUTTER JOIN' which Oracle does not have. So I need some help with figuring out these joins. (I have been reading on the subject for 3 days and have bought about $130 worth of books on SQL and Oracle SQL and still am unsure of how to do this)<br>
<br>
Here is the original select statement that defines the view from SQL Server:<br>
<br>
SELECT a.Company_RecID, <br>
a.Activity_RecID, <br>
a.Category_ID, <br>
a.Date_Entered, <br>
a.Urgency_ID, <br>
a.Activity_Action_ID, <br>
aa.Description, <br>
tm.Assign_To, <br>
tm.Assigned_By, <br>
a.Activity_Board_RecID, <br>
aa.Sort_Order, cc.Short_Name, <br>
c.Company_ID, <br>
tm.To_List_Flag, <br>
tm.By_List_Flag, <br>
a.Subject, <br>
tm.Default_Flag, <br>
tm.Priority, <br>
a.Date_Required, <br>
a.Closed_Flag, <br>
a.Project_RecID, <br>
Project.Project_ID, <br>
Activity_Urgency_Code.Color, <br>
Activity_Urgency_Code.Description AS UC_Desc, <br>
Activity_Urgency_Code.Sort_Order AS UC_sort_order, <br>
a.First_Name, <br>
a.Last_Name, <br>
c.Company_Name<br>
FROM Activity a INNER JOIN<br>
Activity_Action aa ON <br>
a.Activity_Action_ID = aa.Activity_Action_ID <br>
INNER JOIN Task_Manager tm ON <br>
a.Activity_RecID = tm.Activity_RecID <br>
INNER JOIN Company_Category cc ON <br>
a.Company_RecID = cc.Company_RecID AND <br>
a.Category_ID = cc.Category_ID <br>
INNER JOIN<br>
Company c ON a.Company_RecID = c.Company_RecID AND <br>
cc.Company_RecID = c.Company_RecID <br>
LEFT OUTER JOIN<br>
Activity_Urgency_Code ON <br>
a.Urgency_ID = Activity_Urgency_Code.Urgency_ID <br>
LEFT OUTER JOIN<br>
Project ON a.Project_RecID = Project.Project_RecID<br>
<br>
So now how do I go about recreating this in the SQL that Oracle supports. From what I have learned so far, I am gonna try and create several smaller views to build upon to create the final view.<br>
<br>
What is more performance oriented? Dumping all the SQL in one view and letting the optimizer figure it out, or creating multiple smaller views and joining those views together to create a larger view?<br>
<br>
Thanks in advance for the help,<br>
--Bryan