Me han dado a la tarea de seleccionar los datos relevantes de una base de datos de Oracle, pero me doy cuenta de que mis seleccione regresan las filas duplicadas. No necesito para mi informe pero no quiero que ellos para eliminarlos. Podría alguien ayudar a obtener solo los datos que necesito. He probado el código siguiente, pero esto no ayuda.

SELECT distinct bbp.SUBCAR "Treadwell",
       bbp.BATCH_ID "Batch ID",
       bcs.SILICON "Si",
       bcs.SULPHUR "S",
       bcs.MANGANESE "Mn",
       bcs.PHOSPHORUS "P",
       to_char(bcs.SAMPLE_TIME, 'dd-MON-yy hh24:MI') "Sample Time",
       to_char(bbp.START_POUR, 'dd-MON-yy hh24:MI') "Start Pour Time",
       to_char(bbp.END_POUR, 'dd-MON-yy hh24:MI') "End pour Time",
       bofcs.temperature "Temperature"
FROM  bof_chem_sample bcs, bof_batch_pour bbp, bof_celox_sample bofcs
WHERE bcs.SAMPLE_CODE= to_char('D1')
AND bbp.BATCH_ID=bcs.BATCH_ID
AND bcs.SAMPLE_TIME>=to_date('01-jan-10')

OriginalEl autor LaDante Riley | 2011-05-19

2 Comentarios

  1. 5

    Si usted mira la consulta traducido al tipo SQL Server SQL verá que no hay ninguna relación entre su bofcs mesa y el resto de sus datos. Básicamente se está volviendo cada registro en la bofcs’ campo de temperatura, y que se puede producir resultados duplicados?.

    SELECT
         bbp.SUBCAR "Treadwell", 
         bbp.BATCH_ID "Batch ID", 
         bcs.SILICON "Si", 
         bcs.SULPHUR "S",
         bcs.MANGANESE "Mn", 
         bcs.PHOSPHORUS "P", 
         to_char(bcs.SAMPLE_TIME,'dd-MON-yy hh24:MI') "Sample Time", 
         to_char(bbp.START_POUR, 'dd-MON-yy hh24:MI') "Start Pour Time",
         to_char(bbp.END_POUR, 'dd-MON-yy hh24:MI') "End pour Time", 
         bofcs.temperature "Temperature"
    FROM 
         bof_chem_sample bcs, 
    INNER JOIN 
         bof_batch_pour bbp,
    ON
         bbp.BATCH_ID=bcs.BATCH_ID
    INNER JOIN
         bof_celox_sample bofcs
    ON
         **-- NO RELATION B/N BOFCS and the other tables????**
    WHERE 
         bcs.SAMPLE_CODE= to_char('D1') AND 
         bcs.SAMPLE_TIME>=to_date('01-jan-10')
    Buena captura, nunca he manchado. Eso es una completa combinación cartesianas, no es de extrañar que hay un montón de duplicación 🙂
    Gracias, fue un gran paso en la dirección correcta. Me di cuenta de algunas otras se desconecta con el de la base de datos en sí, porque de eso.
    Ver distinct en una consulta debe probablemente campanas de alarma. Por lo general es el de cubrir algún problema en la consulta o en la base de diseño.
    ¿Cómo puedo buscar a una consulta traducido al tipo SQL Server SQL?

    OriginalEl autor bleepzter

  2. 6

    Si la instrucción SELECT tiene una DISTINTA, entonces, todos los registros devueltos tienen una combinación única de valores a través de las columnas de seleccionar. Usted necesita identificar las columnas que devolver valores diferentes a través de los registros que se consideren para ser duplicada.

    OriginalEl autor Datajam

Dejar respuesta

Please enter your comment!
Please enter your name here