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

Ayuda consulta SQL(tuplas duplicadas)

Estas en el tema de Ayuda consulta SQL(tuplas duplicadas) en el foro de Bases de Datos General en Foros del Web. Hola, estoy intentando resolver una consulta SQL pero no me funciona, me da tuplas duplicadas y no se porqué. A ver si fuerais tan amables ...
  #1 (permalink)  
Antiguo 11/01/2010, 11:11
 
Fecha de Ingreso: enero-2010
Mensajes: 2
Antigüedad: 14 años, 10 meses
Puntos: 0
Ayuda consulta SQL(tuplas duplicadas)

Hola, estoy intentando resolver una consulta SQL pero no me funciona, me da tuplas duplicadas y no se porqué. A ver si fuerais tan amables de ayudarme.
Las tablas son estas:


TORNILLO (#id_tornillo,calibre,longitud,material)
TUERCA (#id_tuerca, calibre, longitud, material)
CLAVO (#id_clavo, calibre, longitud, material)
PARTE_FIJA (#id_parte_fija, num_orificios,
calibre_requerido, es_apuntillado)
ELEMENTO_ATORNILLADO (#id_elem_ator,
#id_tornillo, #id_tuerca, #id_parte_fija)
ELEMENTO_APUNTILLADO (#id_elem_apun, #id_clavo,
#id_parte_fija)

Lo que yo intento es sacar los calibres de TUERCAS y TORNILLOS que NO estén en ningún ELEMENTO_ATORNILLADO.

He hecho esta consulta:

SELECT DISTINCT TORNILLO.calibre,TUERCA.calibre FROM TUERCA,TORNILLO
WHERE id_tuerca NOT IN (SELECT id_tuerca FROM ELEMENTO_ATORNILLADO) AND id_tornillo NOT IN (SELECT id_tornillo FROM ELEMENTO_ATORNILLADO)

Esta consulta me devuelve lo que quiero pero me duplica dos resultadosaunque ponga DISTINCT.

Gracias por vuestra ayuda de antemano.
  #2 (permalink)  
Antiguo 11/01/2010, 11:40
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Ayuda consulta SQL(tuplas duplicadas)

utiliza group by a final de tu consulta.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 11/01/2010, 11:51
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 3 meses
Puntos: 39
Respuesta: Ayuda consulta SQL(tuplas duplicadas)

Prueba asi:
Código SQL:
Ver original
  1. SELECT calibre,[TIPO]
  2. FROM (
  3.     SELECT [#id_tornillo] ID,calibre,'TORNILLO' [TIPO] FROM TORNILLO
  4.     UNION
  5.     SELECT [#id_tuerca],calibre,'TUERCA' FROM TUERCA
  6. ) T
  7. WHERE NOT EXISTS (SELECT 1 FROM ELEMENTO_ATORNILLADO WHERE id_tuerca = T.ID AND id_tornillo = T.ID)
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #4 (permalink)  
Antiguo 11/01/2010, 11:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: Ayuda consulta SQL(tuplas duplicadas)

Creo que así lo obtendrás. Primero te sacará los id de tornillos y luego los de tuercas. No he hecho pruebas.

Código SQL:
Ver original
  1. (SELECT 'tornillo' tipo, #id_tornillo ID, calibre WHERE #id_tornillo NOT IN (SELECT #id_tornillo FROM ELEMENTO_ATORNILLADO) ORDER BY #id_tornillo)
  2. UNION ALL
  3. (SELECT 'tuerca', #id_tuerca, calibre WHERE #id_tuerca NOT IN (SELECT #id_tuerca FROM ELEMENTO_ATORNILLADO) ORDER BY #id_tuerca)
  #5 (permalink)  
Antiguo 12/01/2010, 14:20
 
Fecha de Ingreso: enero-2010
Mensajes: 2
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Ayuda consulta SQL(tuplas duplicadas)

Hola, muchas gracias por vuestra ayuda. Era casi como decía Jurena pero sin el ALL.
  #6 (permalink)  
Antiguo 12/01/2010, 15:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: Ayuda consulta SQL(tuplas duplicadas)

Barokete,
el all lo necesitas, creo, pues si no lo pones puedes perder información. Me explico. Si los #id_tornillo e #id_tuerca pueden coincidir, es decir, que haya un #id_tornillo 45 y un #id_tuerca 45, perderías el segundo dato, en caso, creo, de traerte sólo esos campos.
Comprueba si ocurre.

Etiquetas: duplicadas
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:32.