db; $sql = " SELECT tm.TestMapID, tm.TestSiteID, tm.HostType, tm.HostID, CASE WHEN tm.HostType = 'SITE' THEN s.SiteName WHEN tm.HostType = 'WORKSTATION' THEN ws.WorkstationName WHEN tm.HostType = 'INSTRUMENT' THEN el.InstrumentName ELSE tm.HostID END as HostName, tm.ClientType, tm.ClientID, CASE WHEN tm.ClientType = 'SITE' THEN cs.SiteName WHEN tm.ClientType = 'WORKSTATION' THEN cws.WorkstationName WHEN tm.ClientType = 'INSTRUMENT' THEN cel.InstrumentName ELSE tm.ClientID END as ClientName FROM testmap tm LEFT JOIN site s ON tm.HostType = 'SITE' AND s.SiteID = tm.HostID LEFT JOIN workstation ws ON tm.HostType = 'WORKSTATION' AND ws.WorkstationID = tm.HostID LEFT JOIN equipmentlist el ON tm.HostType = 'INSTRUMENT' AND el.EID = tm.HostID LEFT JOIN site cs ON tm.ClientType = 'SITE' AND cs.SiteID = tm.ClientID LEFT JOIN workstation cws ON tm.ClientType = 'WORKSTATION' AND cws.WorkstationID = tm.ClientID LEFT JOIN equipmentlist cel ON tm.ClientType = 'INSTRUMENT' AND cel.EID = tm.ClientID WHERE tm.EndDate IS NULL "; return $db->query($sql)->getResultArray(); } /** * Get test mappings by test site */ public function getMappingsByTestSite($testSiteID) { return $this->where('TestSiteID', $testSiteID) ->where('EndDate IS NULL') ->findAll(); } /** * Get test mappings with details by test site */ public function getMappingsWithDetailsByTestSite($testSiteID) { return $this->select('testmap.*, testmapdetail.*') ->join('testmapdetail', 'testmapdetail.TestMapID = testmap.TestMapID', 'left') ->where('testmap.TestSiteID', $testSiteID) ->where('testmap.EndDate IS NULL') ->where('testmapdetail.EndDate IS NULL') ->findAll(); } }