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

Ayuda consulta de tablas relacionadas

Estas en el tema de Ayuda consulta de tablas relacionadas en el foro de Oracle en Foros del Web. Hola que tal amigos, acudo a ustedes para ver si me pueden guiar o dar una idea de como hacer esto que al principio aparento ...
  #1 (permalink)  
Antiguo 09/11/2010, 21:09
 
Fecha de Ingreso: noviembre-2010
Mensajes: 13
Antigüedad: 14 años, 1 mes
Puntos: 0
Ayuda consulta de tablas relacionadas

Hola que tal amigos, acudo a ustedes para ver si me pueden guiar o dar una idea de como hacer esto que al principio aparento ser sencillo pero ahora.... ya no se que pensar jeje, resulta que tengo 2 tablas relacionadas y se que con el inner join se sacan todos los campos que tengan correspondencia en las 2 tablas, pero lo que yo quiero hacer es por decirlo asi lo contrario que me muestre en la consulta solo los campos que no esten en ambas tablas ya he probado varios metodos y no me funcionan. Es decir por ejemplo

select * from productos inner join pedidos on productos.id_pedido=pedidos.id_pedido

lo que yo hago es esto:

select * from productos inner join pedidos on productos.id_pedido<>pedidos.id_pedido

tambien he probado asi

select * from productos,pedidos where productos.id_pedido<>pedidos.id_pedido


Pero tampoco me da el resultado que yo espero "los campos que no tengan correspondencia en ambas tablas". Ojala alguno de ustedes me pueda ayudar con este problemita, ya que me urge obtener ese resultado, les agradezco de antemano su ayuda y sugerencias.
  #2 (permalink)  
Antiguo 10/11/2010, 09:24
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Ayuda consulta de tablas relacionadas

Buenos días davidc_10, creo que lo que necesitas hacer es utilizar las cláusulas NOT IN y/o NOT EXISTS, te recomiendo buscar más información al respecto.

Tus consultas quedarían más o menos así:

Código SQL:
Ver original
  1. SELECT * FROM productos WHERE id_pedido NOT IN (
  2. SELECT DISTINCT id_pedido FROM pedidos)
  3.  
  4. --Otra forma
  5.  
  6. SELECT * FROM productos T1 WHERE NOT EXISTS
  7. (SELECT * FROM pedidos T2 WHERE T1.id_pedido = T2.id_pedido)
Si continuas con problemas te pediría más información acerca de tus tablas y de ser posible algunos datos de ejemplo.

Saludos
Leo
  #3 (permalink)  
Antiguo 10/11/2010, 10:15
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 6 meses
Puntos: 43
Respuesta: Ayuda consulta de tablas relacionadas

Creo que una forma mas rápida es usar el MINUS.

SELECT ID FROM PRODUCTOS
MINUS
SELECT ID FROM PEDIDOS

Esto te sacaría los PRODUCTOS que no están en PEDIDOS. Y ya para sacar todos los datos :

SELECT * FROM PRODUCTOS
WHERE ID IN
(SELECT ID FROM PRODUCTOS
MINUS
SELECT ID FROM PEDIDOS
) ;
  #4 (permalink)  
Antiguo 10/11/2010, 14:32
 
Fecha de Ingreso: noviembre-2010
Mensajes: 13
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Ayuda consulta de tablas relacionadas

Amigos muchisimas gracias, las dos sugerencias me sirvieron y ya pude hacer lo que necesitaba. Aprovechando su amabilidad quisiera ver si me pueden orientar a resolver otra duda. Resulta que hasta ahora estoy utilizando oracle y necesito realizar un trigger pero la verdad la documentacion que he leido no la entiendo. Necesito que el trigger se dispare cuando se actualize un campo, les cuento que anteriormente trabajaba en sql server y ahi no se me complicaba, les pongo el ejemplo en sql server para ver si ustedes me pueden ayudar para escribirlo en oracle:

create trigger pago
ON pagos
AFTER UPDATE
AS
BEGIN
declare @est int
declare @pago int
IF UPDATE(estado)
BEGIN
select @est=id_estado from inserted
select @pago=id_pago from deleted
if @est=3
begin
update estado_cuentas set id_estado=1 where id_pago=@pago
INSERT INTO pago_cuentas
(id_pagoc, id_cliente, fecha)
SELECT id_reservacion, id_cliente, getdate()
FROM INSERTED
end
END

Lo que no se, es si existen en oracle las tablas temporales "inserted" y "deleted" las cuales en sql server, la primera contiene los datos de la tabla actualizada y la segunda los datos de la tabla antes de ser actualizados.

De antemano les agradezco la ayuda que me puedan brindar.
  #5 (permalink)  
Antiguo 10/11/2010, 16:31
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 6 meses
Puntos: 43
Respuesta: Ayuda consulta de tablas relacionadas

create trigger pago
AFTER UPDATE OF CAMPO_DE_TABLA ON pagos


Creo que es así, mañana cuando esté en el curro te lo confirmo.

Confirmado, es así añadiendole el FOR EACH ROW para que se dispare una vez por cada fila actualizada.

create trigger pago
AFTER UPDATE OF CAMPO_DE_TABLA ON pagos FOR EACH ROW

Última edición por jc3000; 11/11/2010 a las 02:25

Etiquetas: relacionadas, tablas
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 02:00.