GARANTIR DESCONTO

Fórum Registros Órfãos #202278

20/12/2003

0

Observem :

SELECT PRD.*, MAR.*, GRU.*, ESP.*
FROM PRODUTOS PRD
INNER JOIN MARCA MAR ON (MAR.MAR_AUTOMATICO = PRD.PRD_COD_MARCA)
INNER JOIN GRUPO GRU ON (GRU.GRU_AUTOMATICO = PRD.PRD_COD_GRUPO)
INNER JOIN ESPECIF ESP ON (ESP.ESP_AUTOMATICO = PRD.PRD_COD_ESPECIF)
ORDER BY PRD_DESCRICAO ASC

Esta instrucao SQL funciona perfeitamente, mas caso alguma informacao (em PRODUTO) não exista em (MARCA ou GRUPO ou ESPECIF), ele não entrará no SELECT. Quer dizer, o registro está órfão, perdeu a referência.
Ele só aparece no SELECT, caso MARCA, GRUPO, ESPECIF sejam positivas.

Gostaria de saber como que faz o inverso, identificar os registros que são órfãos... (q nao apareceram nesta instrucao).
8)
Grato.


Pedih

Pedih

Responder

Posts

20/12/2003

Afarias

troque os INNER por LEFT (left outer join), ex::

SELECT PRD.*, MAR.*, GRU.*, ESP.*
FROM PRODUTOS PRD
LEFT JOIN MARCA MAR ON (MAR.MAR_AUTOMATICO = PRD.PRD_COD_MARCA)
LEFT JOIN GRUPO GRU ON (GRU.GRU_AUTOMATICO = PRD.PRD_COD_GRUPO)
LEFT JOIN ESPECIF ESP ON (ESP.ESP_AUTOMATICO = PRD.PRD_COD_ESPECIF)
ORDER BY PRD_DESCRICAO ASC


T+


Responder

Gostei + 0

21/12/2003

Pedih

:idea:
Afarias, sua instrução SQL funcionou perfeitamente, mas gerou um incoveniente.
Veja (sua solucao)
>> troque os INNER por LEFT (left outer join), ex::

>> SELECT PRD.*, MAR.*, GRU.*, ESP.*
>> FROM PRODUTOS PRD
>> LEFT JOIN MARCA MAR ON (MAR.MAR_AUTOMATICO = PRD.PRD_COD_MARCA)
>> LEFT JOIN GRUPO GRU ON (GRU.GRU_AUTOMATICO = PRD.PRD_COD_GRUPO)
>> LEFT JOIN ESPECIF ESP ON (ESP.ESP_AUTOMATICO = PRD.PRD_COD_ESPECIF)
>> ORDER BY PRD_DESCRICAO ASC

Novo Problema :
eu altero qualquer registro, executo um .Post, um .ApplyUpdates(-1), e o mesmo não é alterado no Banco. O que será ???.. ou utilizando a instrucao LEFT fica impossibilidade de alterar os registros.
Lembrando : Uma inclusao, funciona perfeitamente, mas uma alteracao ele nao aplica no banco.

/**** as alteracoes sao aceitas, até mesmo num GRID, um .Post é executado sem qualquer problema juntamente com um ApplyUpdates(-1).
só que: não é gravado a alteracao no banco.
/****


Estou Utlilizando
WinXP, FB 1.5, DBExpress. (TSQLConnection, TSQLDataSet, TDataSetProvider, TClientDataSet, TDataSource).

Obrigado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar