3

えーと、タイトルでこれをどう説明したらいいのかわからなかったので、ここでわかりやすくします。

私はいくつかのテーブルを持っています:

TiposDeCatalogo:

PK IdTipoCatalogo (int) 
IdVendedor (int)
Nombre (string)
Descripcion (string)
Estado (string)
FechaAlta (date)

Catalogo: 

PK IdCatalogo (int) 
IdTipoCatalogo (int)
IdVendedor (int)
Nombre (string)
Descripcion (string)
Estado (string)
FechaAlta (date)

Catalogo.IdTipoCatalogo=TiposDeCatalogos.IdTipoCatalogoに外部キーがあります

Catalogoにすでに登録されているTiposDeCatalogoのすべての行を表示できるクエリが必要です

例えば...

TiposDeCatalogosには次の行があります

IdTipoCatalogo IdVendedor Nombre Estado FechaAlta

1   1   Catalogos de Ventas     Activo  20/08/2012
2   1   Catalogos de CRM        Activo  20/08/2012
3   1   Catalogos de Inventario     Activo  20/08/2012
4   1   Catalogos de Facturacion        Activo  04/09/2012
5   1   Catalogos de Cobranza       Activo  04/09/2012
6   1   Catalogos de Admin      Activo  04/09/2012
7   1   Catalogos de Admin      Activo  04/09/2012
8   1   Catalogos de Finanzas       Activo  04/09/2012
9   1   Catalogos de Clientes       Activo  04/09/2012
12  1   Catalogos de Administ General       Activo  04/09/2012

次に、Catalogoには次の行があります

IdCatalogo IdTipoCatalogo IdVendedor Nombre Estado FechaAlta

1   1   17  Formas de Pago  formas de pago para las ventas  Activo  01/09/2012
2   5   1   Tipos de Moneda     Activo  05/09/2012
3   2   1    Tipos de Agendamiento      Activo  05/09/2012
4   3   1   Tipos de Precios        Activo  06/09/2012
5   5   1    TIpos de Moneda        Activo  06/09/2012
6   3   1   Tipo de Presentacion        Activo  06/09/2012

Catalogoでは、次のIdTipoCatalogoのみが登録されていることに気付くかもしれません(1、2、3、5)

だから私が欲しいのは、それらのTiposDeCatalogosを表示するクエリです(それぞれ1回だけなので、この例ではクエリは4行のみを返す必要があります)...

あなたが私を助けてくれることを願っています、ありがとう

4

1 に答える 1

4

EXISTSこれを達成するために使用できます:

SELECT
    tc.IdTipoCatalogo,
    tc.IdVendedor,
    tc.Nombre,
    tc.Estado,
    tc.FechaAlta
FROM TiposDeCatalogos tc
WHERE EXISTS (
    SELECT 1
    FROM Catalogo c 
    WHERE c.IdTipoCatalogo = tc.IdTipoCatalogo 
)

JOINまたは、とを使用することもできますDISTINCT

SELECT DISTINCT
    tc.IdTipoCatalogo,
    tc.IdVendedor,
    tc.Nombre,
    tc.Estado,
    tc.FechaAlta
FROM 
    TiposDeCatalogos tc
    JOIN Catalogo c ON c.IdTipoCatalogo = tc.IdTipoCatalogo 

DISTINCTただし、によって生成された重複を除外するために追加の操作が必要になるため、これは効率が低下する可能性がありますJOIN

于 2012-09-14T18:17:57.443 に答える