Estimados, tengo un problemita como puedo crear una consulta que borre solo un cliente que no tenga obras con ordenes. Dejo una imagen de las tablas.
Espero que me puedan ayudar, gracias.
Adios.
| ||||
Como creo una consulta que borre clientes sin ordenes Estimados, tengo un problemita como puedo crear una consulta que borre solo un cliente que no tenga obras con ordenes. Dejo una imagen de las tablas. Espero que me puedan ayudar, gracias. Adios. |
| ||||
Respuesta: Como creo una consulta que borre clientes sin ordenes Seria mas optimo usar NOT EXISTS en lugar de NOT IN.
__________________ No repitamos temas, usemos el Motor de busquedas Plantea bien tu problema: Ayúdanos a ayudarte. |
| ||||
Respuesta: Como creo una consulta que borre clientes sin ordenes Estimados, gracias por la ayuda, alfcm me funciono para borrar los clientes que no tienen obras, pero no para borrar los clientes que tienen obras pero no ordenes, como quedaria la consulta para esto ultimo?. flaviovich por que es mas optimo el EXISTS que el IN?. Gracias, adios. |
| ||||
Respuesta: Como creo una consulta que borre clientes sin ordenes Si el SELECT que esta dentro del IN devuelve miles de registros imagina cuantas comparaciones se realizaran por cada registro, en cambio el EXIST solo busca un registro de acuerdo al JOIN que se haga. Haz la comparacion y nos dices cual es mas rapido.
__________________ No repitamos temas, usemos el Motor de busquedas Plantea bien tu problema: Ayúdanos a ayudarte. |
| ||||
Respuesta: Como creo una consulta que borre clientes sin ordenes Estimados, gracias por la ayuda pero tengo un problemita, al final mi consulta para probra que me traiga los clientes que no tiene obras y clientes que tienen obras pero que no tengan ordenes me funciona bien y es la siguiente:
Código:
Pero la idea es poder borrar los clientes que no tengan obras y clientes que tengan obras pero que no tengan ordenes y la consulta me quedo asi:SELECT CLIENTE.RUT FROM CLIENTE WHERE CLIENTE.RUT NOT IN( SELECT DISTINCT OBRA.RUT FROM CLIENTE INNER JOIN OBRA ON CLIENTE.RUT = OBRA.RUT INNER JOIN ORDEN ON OBRA.IDOBRA = ORDEN.IDOBRA)
Código:
La cual me funciona y borra los clientes de la tabla cliente que no tienen obras en la tabla obra, pero no me funciona para borrar los clientes que tienen obras sin ordenes. Como puedo completar esta consulta para que aparte de borrar el cliente me borre las obras que no tienen ordenes.DELETE FROM CLIENTE WHERE CLIENTE.RUT NOT IN( SELECT DISTINCT OBRA.RUT FROM CLIENTE INNER JOIN OBRA ON CLIENTE.RUT = OBRA.RUT INNER JOIN ORDEN ON OBRA.IDOBRA = ORDEN.IDOBRA) Gracias, adios. PD1: Las tablas. PD2: flaviovich no puedo hacer funcionar el EXISTS o NOT EXISTS en la consulta.
|
| ||||
Respuesta: Como creo una consulta que borre clientes sin ordenes Compañero, se te aconsejo el uso del EXISTS (NOT). SELECT CLIENTE.RUT FROM CLIENTE WHERE CLIENTE.RUT a NOT EXISTS(SELECT * FROM ORDEN WHERE CLIENTE.RUT = OBRA.RUT) ON OBRA.IDOBRA = ORDEN.IDOBRA) |
| ||||
Respuesta: Como creo una consulta que borre clientes sin ordenes Cita: Estimado no puedo hacer funcionar el EXISTS (NOT) como le comentaba a flaviovich, a que se refiere el "a" que pones en la consulta?.Gracias. |
| ||||
Respuesta: Como creo una consulta que borre clientes sin ordenes Asi sería:
Código sql:
Para borrar las ordenes tienes que hacer otro delete.Ver original Suerte!
__________________ No repitamos temas, usemos el Motor de busquedas Plantea bien tu problema: Ayúdanos a ayudarte. |