On Tue, Jun 2, 2009 at 11:22, Alvaro Herrera <[email protected]> wrote:
> Diego Andrés Sanabria Martin (diegueus9) escribió:
>> Saludos a todos!
>>
>> Les escribo porque tengo una duda que es la siguiente:
>> Tengo una taba A con id y una tabla B que tiene una llave foranea a A,
>> necesito obtener todos los item en A que no esten en B, intente con:
>> select  from A join B on A.id = B.campo_a_id where A.id is not null
>> pero no funciona, que estoy haciendo mal?
>
> Te falta indicarle que es un outer join, por ej. con "left":
>
> select  from A left join B on A.id = B.campo_a_id where A.id is not null
>
> De lo contrario hace un inner join.

Sip, me faltó escribirlo, pero describiré mejor la situación:
La tabla A es item y la tabla B es ip_modem_solicitado
y el select es el siguiente:

select * from item left outer join ip_mantenimiento_modem on item.id =
ip_mantenimiento_modem.item_id where ip_mantenimiento_modem.id is not
null and bodega_id=6 and tipo_item_id=3

Y me muestra 35 filas, cuando debería ser solo 1
si hago un :
select  * from item where bodega_id=6 and tipo_item=3
son 36 registros.

Necesito es ese unico registro que no esta en ip_mantenimiento_modem,
intenté cambiando el orden de las tablas, pero no funciona.


>
> --
> Alvaro Herrera                        http://www.advogato.org/person/alvherre
> We take risks not to escape from life, but to prevent life escaping from us.
>



-- 
Diego Andrés Sanabria
Ingeniería de Sistemas Universidad Distrital
about:me http://www.google.com/profiles/diegueus9
cel 3015290609

Sent from Bogota, DC, Colombia
--
TIP 6: �Has buscado en los archivos de nuestra lista de correo?
               http://archives.postgresql.org/pgsql-es-ayuda

Responder a