2010-12-15 90 views
0

je sais sql server et non Oracle, donc je vais parler en langage SQL Server pour décrire ce dont j'ai besoin de Oracle.nouveau à oracle, besoin de joindre des tables pour obtenir les valeurs de champ dans mon resultset

J'ai une requête oracle que je développe qui doit sélectionner les champs suivants détaillés ci-dessous. J'ai trouvé tous sauf deux d'entre eux dans la table BUG. les deux autres sont dans d'autres tableaux que je ne suis pas clair sur la façon d'entrer dans mon Oracle Oracle.

également je veux convertir les noms de champ définis dans Oracle en noms de champs qui sont plus significatifs pour moi et indécemment la dame en tant que noms de champs dans ma table sql. (ceci fait partie d'un travail d'insertion d'extrait d'oracle/sql2005) ceci peut devoir être oricalafied aussi bien parce que je l'écris le chemin sql et je m'attends juste à ce qu'il fonctionne ... faites le moi savoir.

mon sql i ajouté important jusqu'à « » comme les espaces réservés pour 2 champs je dois rejoindre à:

champ BG_SUBJECT fait partie du tableau ALL_LISTS, où AL_ITEM_ID est la clé primaire.

DetectedInRelease est le champ REL_NAME dans la table RELEASES où REL_ID est la clé primaire.

SELECT 
bg_user_56 AS Project, 
bg_user_60 AS SubSystem, 
BG_USER_81 AS AssignedToUserName, 
bg_responsible AS AssignedTo, 
bg_status AS Status, 
BG_USER_15 AS BusinessFunction, 
bg_detection_date AS DetectedOnDate, 
BG_SEVERITY AS BusinessSeverity, 
bg_user_36 AS TestingSeverity, 
bg_bug_id AS DefectID, 
Bg_User_09 AS EstFixedDate, 
bg_user_25 AS EstReadyForRetest, 
BG_DESCIPTION AS description, 
BG_USER_03 AS DetectedInDeploymentEvent, 
'' AS DetectedInRelease,--- ??? not in bug table !!!! 
BG_USER_47 AS FunctionalAreaWorkstream, 
BG_USER_19 AS PlannedFixInDeploymentEvent, 
BG_USER_55 AS PlannedFixInRelease, 
BG_USER_57 AS PTMTestManager, 
Bg_User_58 AS RemediatingCTOName, 
'' AS Subject,--- ??? not in bug table !!! 
bg_summary AS Summary, 
bg_user_80 AS MLTestEnvironment, 
GETDATE() AS LoadDateTime, 
bg_user_12 AS Deferred 
FROM tascs_ml_bac_transition_db.BUG 
+0

Qu'avez-vous essayé et pourquoi at-il l'échec (ce message d'erreur)? Les jointures devraient être à peu près les mêmes dans Oracle que dans SQL Server. – FrustratedWithFormsDesigner

+0

votre requête fonctionnera bien, sauf pour les 2 champs manquants. Si vous savez comment rejoindre votre table BUG et les 2 autres tables, il vous suffit d'ajouter: INNER JOIN ou LEFT OUTER JOIN comme vous le faisiez dans SQLServer, je suppose. – LaGrandMere

Répondre

0

la syntaxe de requête est effectivement la même, getDate aura besoin d'être SYSDATE cependant inclus une jointure interne échantillon

SELECT 
     BUG.bg_user_56   AS Project     , 
     BUG.bg_user_60  AS SubSystem     , 
     BUG.BG_USER_81  AS AssignedToUserName   , 
     BUG.bg_responsible AS AssignedTo     , 
     BUG.bg_status   AS Status      , 
     BUG.BG_USER_15  AS BusinessFunction   , 
     BUG.bg_detection_date AS DetectedOnDate    , 
     BUG.BG_SEVERITY  AS BusinessSeverity   , 
     BUG.bg_user_36  AS TestingSeverity   , 
     BUG.bg_bug_id   AS DefectID     , 
     BUG.Bg_User_09  AS EstFixedDate    , 
     BUG.bg_user_25  AS EstReadyForRetest   , 
     BUG.BG_DESCIPTION  AS description    , 
     BUG.BG_USER_03  AS DetectedInDeploymentEvent , 
     REL.REL_NAME   AS DetectedInRelease   , --- ??? not in bug table !!!! 
     BUG.BG_USER_47  AS FunctionalAreaWorkstream , 
     BUG.BG_USER_19  AS PlannedFixInDeploymentEvent, 
     BUG.BG_USER_55  AS PlannedFixInRelease  , 
     BUG.BG_USER_57  AS PTMTestManager    , 
     BUG.Bg_User_58  AS RemediatingCTOName   , 
     al.BG_SUBJECT   AS Subject     , --- ??? not in bug table !!! 
     BUG.bg_summary  AS Summary     , 
     BUG.bg_user_80  AS MLTestEnvironment   , 
     sysdate    AS LoadDateTime    , --changed to sysdate 
     BUG.bg_user_12  AS Deferred 
FROM 
     tascs_ml_bac_transition_db.BUG BUG 
     INNER JOIN 
     ALL_LISTS al 
      ON BUG.AL_ITEM_ID = al.AL_ITEM_ID --THIS ASSUMES AL_ITEM_ID IS COMMON FIELD 
     INNER JOIN 
     RELEASES REL 
      ON BUG.REL_ID  = REL.REL_ID --THIS ASSUMES REL_ID IS COMMON FIELD 
0

Je vais prendre un coup de couteau à ceci:

SELECT 
bg_user_56 AS Project, 
bg_user_60 AS SubSystem, 
BG_USER_81 AS AssignedToUserName, 
bg_responsible AS AssignedTo, 
bg_status AS Status, 
BG_USER_15 AS BusinessFunction, 
bg_detection_date AS DetectedOnDate, 
BG_SEVERITY AS BusinessSeverity, 
bg_user_36 AS TestingSeverity, 
bg_bug_id AS DefectID, 
Bg_User_09 AS EstFixedDate, 
bg_user_25 AS EstReadyForRetest, 
BG_DESCIPTION AS description, 
BG_USER_03 AS DetectedInDeploymentEvent, 
rel.BG_DetectedInRelease AS DetectedInRelease,--- ??? not in bug table !!!! 
BG_USER_47 AS FunctionalAreaWorkstream, 
BG_USER_19 AS PlannedFixInDeploymentEvent, 
BG_USER_55 AS PlannedFixInRelease, 
BG_USER_57 AS PTMTestManager, 
Bg_User_58 AS RemediatingCTOName, 
al.BG_SUBJECT AS Subject,--- ??? not in bug table !!! 
bg_summary AS Summary, 
bg_user_80 AS MLTestEnvironment, 
GETDATE() AS LoadDateTime, 
bg_user_12 AS Deferred 
FROM tascs_ml_bac_transition_db.BUG B, ALL_LISTS al, releases rel 
WHERE al.al_item_id = b.al_item_id and rel.rel_id = b.rel_id; 

Il est difficile de deviner si cela va fonctionner puisque je n'ai pas complète de ces DDL tables, mais ceci est mon meilleure estimation en fonction de ce que vous avez donné. J'ai supposé que BUG avait des champs avec les mêmes noms que ceux auxquels vous devez vous joindre. Cela pourrait ne pas être valide, n'hésitez pas à clarifier.

Vous pouvez également utiliser la syntaxe INNER JOIN ON si vous le préférez.