Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

consulta utilizando distinct

Estas en el tema de consulta utilizando distinct en el foro de PostgreSQL en Foros del Web. Hola amigos, Estoy haciendo una consulta con distinct pero me marca error, al ejecutarla, mi consulta es: Select DISTINCT(m.id_monitoreo) as id_monitoreo, (i.id_sitio) as id_sitio from ...
  #1 (permalink)  
Antiguo 07/02/2010, 22:35
 
Fecha de Ingreso: febrero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
consulta utilizando distinct

Hola amigos,

Estoy haciendo una consulta con distinct pero me marca error, al ejecutarla, mi consulta es:

Select DISTINCT(m.id_monitoreo) as id_monitoreo, (i.id_sitio) as id_sitio from (select n.id_nse from tbl_monitoreointernet m
INNER JOIN tbl_internet i ON (m.id_sitio=i.id_sitio)
INNER JOIN cat_nse n ON (i.id_nse=n.id_nse))
where m.id_monitoreo=5;

El error:
ERROR: subquery in FROM must have an alias
HINT: For example, FROM (SELECT ...) [AS] foo.

********** Error **********

ERROR: subquery in FROM must have an alias
Estado SQL:42601
Sugerencias:For example, FROM (SELECT ...) [AS] foo.



Espero que me puedan ayudar, gracias.
  #2 (permalink)  
Antiguo 08/02/2010, 06:49
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: consulta utilizando distinct

Cuando dices en el primer from y empiezas una nueva consulta estas creando una tabla virtual que no estas renombrando para ser utilizada en la sentencia.

Prueba así


Código SQL:
Ver original
  1. SELECT
  2. DISTINCT(m.id_monitoreo) AS id_monitoreo,
  3. (i.id_sitio) AS id_sitio
  4. FROM
  5. tbl_monitoreointernet m
  6. INNER JOIN
  7. tbl_internet i
  8. ON (m.id_sitio=i.id_sitio)
  9. INNER JOIN
  10. cat_nse n
  11. ON (i.id_nse=n.id_nse)
  12. WHERE m.id_monitoreo=5;

Un ejemplo simple de por que se presenta el error es por no renombrar la tabla viertual que se crea en base a una consulta.

Código SQL:
Ver original
  1. SELECT t1.campo,t2.campo FROM (SELECT campo1,campo2 FROM tabla) AS t1;

Si no le pones el as, te genera el error que comentas. Fiijate que se da exactamente por eso.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 08/02/2010, 08:17
 
Fecha de Ingreso: febrero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: consulta utilizando distinct

Hola,

Le agregue lo que comentas pero no fuciona;

Select t1.id_monitoreo from (select n.id_nse,m.id_monitoreo,m.id_sitio from tbl_monitoreointernet as m
INNER JOIN tbl_internet i ON (m.id_sitio=i.id_sitio)
INNER JOIN cat_nse n ON (i.id_nse=n.id_nse))
where m.id_monitoreo=5;
  #4 (permalink)  
Antiguo 08/02/2010, 08:59
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: consulta utilizando distinct

Create un vista con la subconsulta que usas en el FROM

entonces PRIMERO harias

Código MySQL:
Ver original
  1. CREATE VIEW v_subquery AS
  2. select n.id_nse,m.id_sitio,m.id_sitio
  3. from  tbl_monitoreointernet m
  4. INNER JOIN tbl_internet i ON (m.id_sitio=i.id_sitio)
  5. INNER JOIN cat_nse n     ON (i.id_nse=n.id_nse)

Y despues tu qery quedaria asi

Código MySQL:
Ver original
  1. Select DISTINCT(v.id_monitoreo) as id_monitoreo, (v.id_sitio) as id_sitio
  2. from v_query AS v
  3. where v.id_monitoreo=5;
  #5 (permalink)  
Antiguo 08/02/2010, 09:14
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: consulta utilizando distinct

No veo que se lo hayas agregado.

hazlo así

Código SQL:
Ver original
  1. SELECT t1.id_monitoreo FROM
  2. (SELECT n.id_nse,m.id_monitoreo AS id_monitoreo,m.id_sitio FROM
  3. tbl_monitoreointernet AS m
  4. INNER JOIN tbl_internet i
  5. ON (m.id_sitio=i.id_sitio)
  6. INNER JOIN cat_nse n
  7. ON (i.id_nse=n.id_nse)) AS t1
  8. WHERE t1.id_monitoreo=5;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: distinct
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:58.