Santiago ya funciona perfectamente, el problema estaba como bien me indicas en la lista de bibliotecas.

Muchas gracias x todo.




Santiago G Martí <[EMAIL PROTECTED]>
Enviado por: [EMAIL PROTECTED]

16/03/2006 12:14
Por favor, responda a forum.help400

       
        Para:        [email protected]
        cc:        
        Asunto:        Re:      ¿Como obtener los registros NO COINCIDENTES entre dos tablas con la misma CLAVE con sentencias SQL?








Lo de los no coincidentes, sólo de la empresa S3EMPR=010, es sencillo:
SELECT  *  FROM  MAPRRC(tabla1)  EXCEPTION JOIN  MBPRRA(tabla2) ON
          MAPRRC.S3EMPR = MBPRRA.EKEMPR
AND  MAPRRC.S3JRNB = MBPRRA.EKJRNB
WHERE S3EMPR=10

Lo que no entiendo es porqué no te devuelve todos los no coincidentes, en
concreto los de la empresa 5 y la mayoría de la empresa 1.
Pero lo más extraño es que te devuelva el registro (10, 4) o el (30, 999),
que no existen en ninguna de las dos tablas.
Como no creo que SQL sea capaz de inventarse registros que no existan, se
me ocurren varias posibilidades:

* Te has equivocado al redactar el mensaje.
* Quizá por un problema de OVRDBF o de listas de bibliotecas, los ficheros
realmente utilizados no son los que tu te crees.
* La sentencia utilizada no es exactamente la que has pegado en el mensaje.

Repite el ensayo, tanto de las tablas individuales como del join, en una
sesión nueva, calificando las tablas con el nombre de las bibliotecas.

Prueba otra alternativa, menos eficiente, a ver los resultados:
SELECT  *  FROM  MAPRRC(tabla1)  WHERE NOT EXISTS(SELECT * FROM
MBPRRA(tabla2) WHERE
          MAPRRC.S3EMPR = MBPRRA.EKEMPR AND  MAPRRC.S3JRNB = MBPRRA.EKJRNB
)

Si el EXCEPTION JOIN sigue dando malos resultados y en cambio el NOT EXISTS
los produce buenos, ponte en contacto con el CAS porque te falta (o te
sobra) alguna PTF.

Si ambas pruebas dan resultados incorrectos, y siguen inventando registros,
puedes optar por consultar con el CAS, crear una nueva religión...


Saludos,
                 ---------------------------
                   Santiago Martí
                      Dusen, S.A.
                 ---------------------------




                                                                         
            "Manolo Rubio                                                
            Caparros/ORGANIZA                                            
            CION Y                                                   Para
            SISTEMAS/GRUPO            [email protected]            
            ZAMORA"                                                    cc
            <[EMAIL PROTECTED]                                            
            or43.com>                                              Asunto
            Enviado por:              Re:     ¿Como obtener los registros
            forum.help400-adm         NO COINCIDENTES entre dos tablas    
            [EMAIL PROTECTED]             con la misma CLAVE con sentencias  
                                      SQL?                                
                                                                         
            16/03/2006 11:26                                              
                                                                         
                                                                         
               Por favor,                                                
               responda a                                                
            [EMAIL PROTECTED]                                            
                 bios.es                                                  
                                                                         
                                                                         





Haciendo exactamente esto :

SELECT  *  FROM  MAPRRC(tabla1)  EXCEPTION JOIN  MBPRRA(tabla2) ON
          MAPRRC.S3EMPR = MBPRRA.EKEMPR
AND  MAPRRC.S3JRNB = MBPRRA.EKJRNB

Da como resultado esto : Que no es correcto segun los datos existentes en
las dos tablas descritas abajo, perdonad la insistencia , pero ya es

cuestion de no se que.......
Aparte solo quiero los NO COINCIDENTES de la empresa S3EMPR=010

¿ Como lo veis ?

S3EMPR    S3JRNB
  010                    4
  010                     13
  010                     999
  010                     19
  010                     20
  010                     21
  010                     24
  010                     25
  010                     26
  001                    1
  010                     28
  030                     999

TABLA 1 (MAPRRC)
(Embedded image moved to file: pic00041.gif)
TABLA2 (MBPRRA)
(Embedded image moved to file: pic18467.gif)


A partir del 01-01-2006 mi correo electronico es :
[EMAIL PROTECTED]

                                                                         
  Santiago G Martí                                                      
  <[EMAIL PROTECTED]>          Para:        [email protected]      
  Enviado por:               cc:                                        
  forum.help400-admi         Asunto:        Re:    ¿Como obtener los    
  [EMAIL PROTECTED]       registros NO COINCIDENTES entre dos tablas con la  
                     misma CLAVE con sentencias SQL?                    
                                                                         
  16/03/2006 10:23                                                      
  Por favor,                                                            
  responda a                                                            
  forum.help400                                                          
                                                                         









Hola Manolo,

Suponiendo que las claves primarias de las tablas son respectivamente:
S3EMPR, S3JRNB y EKEMPR, EKJRNB, la forma sería:

Select * from tabla1 a exception join tabla2 b on a.S3EMPR = b.EKEMPR and
a.S3JRNB = b.EKJRNB

Los calificadores a y b, en este caso, no son necesarios, ya que los campos
tienen diferentes nombres, pero prefiero utilizarlos por claridad.

En caso de que los campos de clave no fueran los que yo he puesto,
sustitúyelos por los que correspondan, ya sean dos o siete, la cuestión es
indicar la forma de determinar si los registros coinciden o no.


Saludos,
                ---------------------------
                  Santiago Martí
                     Dusen, S.A.
                ---------------------------







           "Manolo Rubio
           Caparros/ORGANIZA
           CION Y                                                   Para
           SISTEMAS/GRUPO            [email protected]
           ZAMORA"                                                    cc
           <[EMAIL PROTECTED]
           or43.com>                                              Asunto
           Enviado por:              Re:   ¿Como obtener los registros
           forum.help400-adm         NO COINCIDENTES entre dos tablas
           [EMAIL PROTECTED]             con la misma CLAVE con sentencias
                                     SQL?

           16/03/2006 09:31


              Por favor,
              responda a
           [EMAIL PROTECTED]
                bios.es







Hola Santiago,

Estamos en V5R3, como no estoy muy puesto en este tema te agradecería me
concretaras algo más las sentencias :
Los campos de la tabla 1(MAPRRC) son : S3EMPR, S3JRNB, S3DESC ....... los
de la tabla 2 (MBPRRA) son : EKEMPR, EKJRNB, EKFBAJ
Lo que necesito es obtener como resultado, aquellos registros de la tabla 1
que no existan en la tabla 2 (la tabla 2 es una tabla de apoyo donde se
registran las bajas de la tabla 1). Es una perogrullada  pero no sabemos
hacerlo en SQL (luego tendremos que traducirlo a SQL Server)

Perdona el abuso y muchas gracias.


A partir del 01-01-2006 mi correo electronico es :

[EMAIL PROTECTED]


 Santiago G Martí
 <[EMAIL PROTECTED]>           Para:        [email protected]
 Enviado por:                cc:
 forum.help400-admin         Asunto:        Re:  ¿Como obtener los
 @combios.es         registros NO COINCIDENTES entre dos tablas con la
                     misma CLAVE con sentencias SQL?

  16/03/2006 08:51
 Por favor, responda
 a forum.help400










Hola Manolo, no se si esto funciona en versiones anteriores a V5R3:

Select  *  from tabla1 exception join tabla2 using(CodEmpr, CodPromo)

y a la viceversa

Select  *  from tabla2 exception join tabla1 using(CodEmpr, CodPromo)


Saludos,
               ---------------------------
                 Santiago Martí
                    Dusen, S.A.
               ---------------------------




          "Manolo Rubio
          Caparros/ORGANIZA
          CION Y                                                   Para
          SISTEMAS/GRUPO            [email protected]
          ZAMORA"                                                    cc
          <[EMAIL PROTECTED]
          or43.com>                                              Asunto
          Enviado por:              ¿Como obtener los registros NO
          forum.help400-adm         COINCIDENTES entre dos tablas con
          [EMAIL PROTECTED]             la misma CLAVE con sentencias SQL?


          16/03/2006 08:28


             Por favor,
             responda a
          [EMAIL PROTECTED]
               bios.es










Buenos Dias,









Perdonad la trivialidad de la pregunta pero es mi primera excursión a
SQL. Tengo 2 tablas los campos en negrita son las claves, la pregunta es
: ¿como defino las sentencias de SQL  para obtener como resultado los
registros no coincidentes?. Es decir quiero obtener los registros de la
tabla1 que no existen en la tabla2. Los ficheros son multiempresa.


Tabla 1 : CodEmpr, CodPromo, Descrip, ......


Tabla 2 : CodEmpr, CodPromo, FechaBaja, ......



Muchas gracias x adelantado.














__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400




__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es

_____________________________________________________

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400



Attachment: pic00041.gif
Description: GIF image

Attachment: pic18467.gif
Description: GIF image

Responder a