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

intruccion con TOP, LIMIT- ayuda

Estas en el tema de intruccion con TOP, LIMIT- ayuda en el foro de PostgreSQL en Foros del Web. Saludos, recurro a ustedes para perdirles ayuda para generar esta instruccion que hasta ahora no me sale. problema tengo 2 tablas ANUNCIO y ANUNCIODET ahora ...
  #1 (permalink)  
Antiguo 20/05/2008, 08:26
 
Fecha de Ingreso: abril-2007
Mensajes: 63
Antigüedad: 17 años
Puntos: 0
intruccion con TOP, LIMIT- ayuda

Saludos, recurro a ustedes para perdirles ayuda para generar esta instruccion que hasta ahora no me sale.

problema

tengo 2 tablas ANUNCIO y ANUNCIODET ahora en general como respuesta en la pagina web solo e deve botar un anuncio de cada uno, ahora tengo 2 filtros de busqueda que son por razocial y por distrito, si solo busco por razonsocial normal me sale anuncio(pa esta consulta si se se como devo hacer). pero cuando busco por distrito ahi esta el problema me da como resultado varios que son del mismo distrito. les explico asi


seleccioname los anuncios de la tabla anuncio donde racionsocial tenga la palabra "co" y distrito="LOS OLIVOS" Y SOLO MUESTRAME 10 REGISTROS

hice esto

SELECT anuncio.idanun,anuncio.razonsocial, SubQuery.distrito
FROM anuncio INNER JOIN (SELECT * FROM anunciodet where distrito='LOS OLIVOS' ) AS SubQuery ON anuncio.idanun= SubQuery.idanun
WHERE anuncio.razonsocial ILIKE '%co%' limit 10

resultado este
idanun,zraonsocial,distrito
1 ; "comercio" ;"LOS OLIVOS"
1 ;"comercio" ;"LOS OLIVOS"
1 ;"comercio" ;"LOS OLIVOS"
2 ;"continental" ;"LOS OLIVOS"


como ven me sale varios anuncios por que tiene varios direcion en un distrito como hago para que me filtre o mejor dicho para que me tome un registro por cada anuncio de la tabla anunciodet
algo asi INNER JOIN (SELECT top 1* FROM anunciodet where distrito='LOS OLIVOS'


e juntado las 2 tablas y trabajrle de modo estructurado pero no sale el problema esta en el top y limit,

espeor me ayuden gracias de todos modos..




aqui les dejo la base de datos resumida:

CREATE TABLE anuncio
(
idanun integer NOT NULL,
razonsocial character varying(150)

)
WITH OIDS;

CREATE TABLE anunciodet
(
idanun integer NOT NULL,
idubica integer NOT NULL,
distrito character varying(150)

)
WITH OIDS;


insert into anuncio(idanun,razonsocial) values(1,'comercio');
insert into anuncio(idanun,razonsocial) values(2,'continental');
insert into anuncio(idanun,razonsocial) values(3,'nexus2000')


insert into anunciodet(idanun,idubica,distrito) values(1,1,'LOS OLIVOS');
insert into anunciodet(idanun,idubica,distrito) values(1,2,'MIRAFLORES');
insert into anunciodet(idanun,idubica,distrito) values(1,3,'LOS OLIVOS');
insert into anunciodet(idanun,idubica,distrito) values(1,4,'LOS OLIVOS')

insert into anunciodet(idanun,idubica,distrito) values(2,1,'SURCO');
insert into anunciodet(idanun,idubica,distrito) values(2,2,'LIMA');
insert into anunciodet(idanun,idubica,distrito) values(2,3,'LOS OLIVOS')

insert into anunciodet(idanun,idubica,distrito) values(3,1,'SAN MARTIN');
insert into anunciodet(idanun,idubica,distrito) values(3,2,'CALLAO');
insert into anunciodet(idanun,idubica,distrito) values(3,3,'LA PERLA')


aqui esta la instruccion que eh estado revisando para ver si me sale el resultado


SELECT anuncio.idanun,anuncio.razonsocial, SubQuery.dir1,SubQuery.dir2
FROM anuncio INNER JOIN (SELECT * FROM anunciodet where distrito='LOS OLIVOS' limit 1 ) AS SubQuery ON anuncio.idanun= SubQuery.idanun
WHERE anuncio.razonsocial ILIKE '%co%'
  #2 (permalink)  
Antiguo 20/05/2008, 08:29
 
Fecha de Ingreso: abril-2007
Mensajes: 63
Antigüedad: 17 años
Puntos: 0
Respuesta: intruccion con TOP, LIMIT- ayuda

disculpen peo la utima instruccion tiene errores asi es esta.
SELECT anuncio.idanun,anuncio.razonsocial, SubQuery.distrito

FROM anuncio INNER JOIN (SELECT * FROM anunciodet where distrito='LOS OLIVOS' limit 1 ) AS SubQuery ON anuncio.idanun= SubQuery.idanun
WHERE anuncio.razonsocial ILIKE '%co%' limit 10
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 16:03.