SQL - Mostrar datos sin duplicados

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 35 puestos en SQL (en relación al último mes)
Gráfica de SQL

Mostrar datos sin duplicados

Publicado por Sacar datos duplicados (5 intervenciones) el 16/03/2021 04:32:24
Me esta trayendo datos duplicados quisiera saber como puedo agregar una senten para que me los excluya ya que agregandoles select distinct arroja error

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
SELECT om.type,
       orders,
       *
FROM orders
JOIN order_product op ON orders.id=op.order_id
JOIN order_modifications om ON orders.id=om.order_id
WHERE op.store_id IN (900083464,
                      900083314,
                      900060227,
                      900082940,
                      900082948,
                      900082943,
                      900082945,
                      900082949,
                      900082939,
                      900082944,
                      900082946,
                      900082947,
                      900082937,
                      900082926,
                      900082927,
                      900082928,
                      900082929,
                      900082930,
                      900082931,
                      900082932,
                      900082933,
                      900082936,
                      900082938,
                      900082934,
                      900082935,
                      900082941,
                      900082942)
  AND type ILIKE '%cancel%'
  AND orders.created_at >= now() - interval '5d'
  and type in ('cancel_by_support', 'canceled_by_automation')
ORDER BY om.created_at DESC
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Mostrar datos sin duplicados

Publicado por Isaias (1921 intervenciones) el 16/03/2021 15:48:22
¿Cual es su motor de base de datos?, ¿Cual es el error?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de gilman
Val: 184
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Mostrar datos sin duplicados

Publicado por gilman (103 intervenciones) el 17/03/2021 08:40:39
El problema está en que cuando usas una clausula ORDER BY para poder usar la clausula DISTINCT es necesario que los campos incluidos en la clausula ORDER BY deben estar incluidos entre los que devuelve la sentencia, y, en tu caso, el campo
om.created_at no es uno de los devueltos por la sentencia.
Podrías probar con:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/* Formatted on 17/03/2021 8:37:15 (QP5 v5.252.13127.32847) */
SELECT DISTINCT om.TYPE, orders.campo1, orders.campo2 --y así con todos los campos que necesites de la tabla orders
  FROM (SELECT om.TYPE, orders.*
          FROM orders
               JOIN order_product op ON orders.id = op.order_id
               JOIN order_modifications om ON orders.id = om.order_id
         WHERE     op.store_id IN (900083464,
                                   900083314,
                                   900060227,
                                   900082940,
                                   900082948,
                                   900082943,
                                   900082945,
                                   900082949,
                                   900082939,
                                   900082944,
                                   900082946,
                                   900082947,
                                   900082937,
                                   900082926,
                                   900082927,
                                   900082928,
                                   900082929,
                                   900082930,
                                   900082931,
                                   900082932,
                                   900082933,
                                   900082936,
                                   900082938,
                                   900082934,
                                   900082935,
                                   900082941,
                                   900082942)
               AND TYPE LIKE '%cancel%'
  AND orders.created_at >= now() - interval '5d'
  AND TYPE IN ('cancel_by_support', 'canceled_by_automation')
ORDER BY om.created_at DESC)
pero no sé si te conservará la ordenación, supongo que sí, lo que no tendrás es registros repetidos.
Nota:
He cambiado ILIKE por LIKE ya que me parece que es un error de escritura, y orders,* por orders.*, por la misma razón
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar