0

5 つのテーブルからの複雑な select ステートメントがあります。テーブルの 1 つから同じフィールド値を持つ行の重複を避けたいと考えています。

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 

このクエリでは、に基づいて重複行を表示しませんlu_app_operations.operation_enname

4

4 に答える 4

0

Distinct と Group by を使用して結果を取得できるかもしれませんが、複数のテーブルを結合するには、AND の代わりに JOIN を使用することをお勧めします。

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 
于 2013-08-21T06:03:03.207 に答える
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 
于 2013-08-21T05:51:04.720 に答える
0

DISTINCT キーワードを使用します。

SELECT DISTINCT role_enname, <rest of your query>
于 2013-08-21T05:40:49.697 に答える