2013-08-21 3 views
0

J'ai une instruction de sélection complexe à partir de 5 tables, Je souhaite éviter les doublons de lignes ayant la même valeur de champ dans l'une des tables.Sélection parmi plusieurs tables sans doublon

SELECT role_enname 
      ,lu_app_operations.operation_enname 
      , lu_applications.app_enname 
      , lu_app_oper_groups.oper_group_enname 
FROM app_operation_roles 
     ,roles 
     ,lu_app_operations 
     ,lu_applications 
     ,lu_app_oper_groups 
WHERE app_operation_roles.role_id=roles.role_id 
AND app_operation_roles.app_operation_id=lu_app_operations.app_operation_id 
AND roles.app_id=lu_applications.app_id 
AND lu_app_operations.app_oper_group_id=lu_app_oper_groups.app_oper_group_id 
AND app_operation_roles.retired =0 
AND roles.retired    =0 

Dans cette requête, je ne suis pas montrer les lignes de doublons basé sur lu_app_operations.operation_enname

Répondre

0

Utilisez le mot-clé DISTINCT:

SELECT DISTINCT role_enname, <rest of your query> 
0

utilisation mot-clé distinct comme suit

SELECT DISTINCT role_enname,lu_app_operations.operation_enname, lu_applications.app_enname, 
lu_app_oper_groups.oper_group_enname 
FROM app_operation_roles,roles,lu_app_operations,lu_applications,lu_app_oper_groups 
WHERE app_operation_roles.role_id=roles.role_id 
AND app_operation_roles.app_operation_id=lu_app_operations.app_operation_id 
AND roles.app_id=lu_applications.app_id 
AND lu_app_operations.app_oper_group_id=lu_app_oper_groups.app_oper_group_id 
AND app_operation_roles.retired =0 AND roles.retired    =0 
0

peut-être vous pouvez utiliser Distinct et Group by pour obtenir le résultat, mais gardez à l'esprit, pour rejoindre plusieurs tables, le meilleur est utiliser encore REJOIGNEZ au lieu de ET

SELECT DISTINCT role_enname 
     ,lu_app_operations.operation_enname 
     , lu_applications.app_enname 
     , lu_app_oper_groups.oper_group_enname 
FROM app_operation_roles 
,roles 
,lu_app_operations 
,lu_applications 
,lu_app_oper_groups 
WHERE app_operation_roles.role_id=roles.role_id 
AND app_operation_roles.app_operation_id=lu_app_operations.app_operation_id 
AND roles.app_id=lu_applications.app_id 
AND lu_app_operations.app_oper_group_id=lu_app_oper_groups.app_oper_group_id 
AND app_operation_roles.retired =0 
AND roles.retired    =0 
GROUP BY role_enname, 
lu_app_operations.operation_enname, 
lu_applications.app_enname, 
lu_app_oper_groups.oper_group_enname 
0
SELECT distinct role_enname,lu_app_operations.operation_enname, lu_applications.app_enname,lu_app_oper_groups.oper_group_enname 
FROM app_operation_roles,roles,lu_app_operations,lu_applications,lu_app_oper_groups 
WHERE app_operation_roles.role_id=roles.role_id 
AND app_operation_roles.app_operation_id=lu_app_operations.app_operation_id 
AND roles.app_id=lu_applications.app_id 
AND lu_app_operations.app_oper_group_id=lu_app_oper_groups.app_oper_group_id 
AND app_operation_roles.retired =0 
AND roles.retired =0 
Questions connexes