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

Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

Estas en el tema de Base Conocimiento Consulta para encontrar un registro (Consulta Anidada) en el foro de SQL Server en Foros del Web. Hola a todos otra vez, gracias por redirigirme al otro grupo para responder a mi duda, la verdad que si me ha servido el apoyo ...
  #1 (permalink)  
Antiguo 28/11/2012, 11:48
 
Fecha de Ingreso: noviembre-2011
Ubicación: En 0-1
Mensajes: 68
Antigüedad: 12 años, 11 meses
Puntos: 0
Pregunta Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

Hola a todos otra vez, gracias por redirigirme al otro grupo
para responder a mi duda, la verdad que si me ha servido el
apoyo de aquí. El planteamiento del problema que tengo es el
siguiente:

Tengo 2 Tablas: ANIMALES y RASGOS, cuya información estará
de la siguiente manera:

------------------------
|ANIMALES |
------------------------
| CLAVE | NOMBRE |
------------------------
| 1 | COCODRILO |
------------------------
| 2 | VACA |
------------------------

------------------------
| CVEANIM | RASGO |
------------------------
| 2 | PATAS |
------------------------
| 1 | PATAS |
------------------------
| 2 | COLA |
------------------------
| 1 | COLA |
------------------------
| 1 | HACE MU |
------------------------

Quiero buscar el nombre de un animal en base a sus características,
dando para ésto dentro de la consulta SQL sus rasgos. Si la
consulta girara en solamente 2 rasgos, mas o menos quedaría así:

SELECCIONA EL CAMPO NOMBRE DE LA TABLA ANIMALES CUANDO EL CAMPO
CLAVE ESTE DENTRO DE (SELECCIONA EL CAMPO CVEANIM DE RASGOS CUANDO
EL CAMPO RASGO SEA IGUAL A 'PATAS' Y SEA IGUAL A 'COLA')

Dentro de la consulta me arrojaría:
-------------
| NOMBRE |
-------------
|VACA |
-------------
|COCODRILO |
-------------

Y si soy más específico:

SELECCIONA EL CAMPO NOMBRE DE LA TABLA ANIMALES CUANDO EL CAMPO
CLAVE ESTE DENTRO DE (SELECCIONA EL CAMPO CVEANIM DE RASGOS CUANDO
EL CAMPO RASGO SEA IGUAL A 'PATAS' Y SEA IGUAL A 'COLA', Y SEA
IGUAL A 'HACE MU')

Debería dar como resultado nomás VACA, pero vuelve a aparecer
dos registros.

la consulta la estoy manejando de la siguiente manera:

SELECT nombre FROM animales WHERE clave IN (SELECT cveAnim FROM
rasgos WHERE rasgo IN ('COLA','PATAS','HACE MU'))

PARECERÁ ALGO TONTO LO QUE TRATO DE HACER, PERO PIENSA... SI
YO TE DIGO LAS SIGUIENTE PALABRAS: CHICA, MESA, TUBO, CERVEZA
¡¿HEEEEY, EN QUÉ ESTAS PENSANDO?! ¡ESO ES LO QUE QUIERO HACER
CON MI PROYECTO!

Siento que mi consulta SQL no es la correcta ¿Cómo creen ustedes que debería de ser para arrojarme un solo registro?
  #2 (permalink)  
Antiguo 28/11/2012, 12:33
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
Respuesta: Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

Código SQL:
Ver original
  1. SELECT nombre FROM animales WHERE clave IN (SELECT cveAnim, COUNT(*) AS A FROM
  2. rasgos WHERE rasgo IN ('COLA','PATAS','HACE MU') GROUP BY cveAnim HAVING a = 3)

Así consigues que la subselect sólo te devuelva los que tienen todas las características.
  #3 (permalink)  
Antiguo 28/11/2012, 12:33
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 2 meses
Puntos: 774
Respuesta: Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

busca informacion sobre full text index, y busquedas sobre campos de tipo text eso quizas te ayude a resolver tu problema
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 28/11/2012, 14:10
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 3 meses
Puntos: 40
Respuesta: Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

Más o menos como Heimish:
Código SQL:
Ver original
  1. SELECT  A.Nombre
  2. FROM    Animales A
  3. INNER JOIN Rasgos R
  4.     ON A.Clave=R.Cveanim
  5. WHERE   R.Rasgo IN ('Patas','Cola','Hace Mu')
  6. GROUP BY A.Nombre
  7. HAVING COUNT(1)=3;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #5 (permalink)  
Antiguo 28/11/2012, 15:31
 
Fecha de Ingreso: noviembre-2011
Ubicación: En 0-1
Mensajes: 68
Antigüedad: 12 años, 11 meses
Puntos: 0
De acuerdo Respuesta: Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

Gracias Heimish2000!! El query SQL queda de la siguiente manera: SELECT nombre FROM animales WHERE clave IN (SELECT claveAnim FROM rasgos WHERE rasgo IN ('COLA','PATAS', 'HACE MU') GROUP BY claveAn HAVING count(*) = 3)

SE PUEDEN CAMBIAR EL ORDEN DE LAS CADENAS DENTRO DE IN Y NO HAY PROBLEMA; SI ESCRIBO SOLO "COLA" Y "PATAS" EL QUERY NO REGRESA NADA, PERO ESO ESTA BIEN, PORQUE HAY MUCHOS ANIMALES DENTRO DE LA BD Y NO QUIERO MUCHAS COINCIDENCIAS O REGISTROS.

EL NÚMERO 3 AL FINAL DEL QUERY count(*) = 3, PUEDE SER CAMBIADA A UNA VARIABLE QUE VAYA CONTENIENDO EL NÚMERO DE VECES QUE SE METE UN RASGO DENTRO DE LA SENTENCIA... ESO CON UN PROGRAMA HECHO EN ALGUN LENGUAJE SE PUEDE REALIZAR AHI ESTAMOS EN CONTACTO CUANDO LO REALIZE MAN!!!

Y RECUERDA NO PIENSES EN NADA CUANDO TE DIGA ESTAS PALABRAS: CHICA, BAILE, TUBO, CERVEZA JAJAJAJAJA
  #6 (permalink)  
Antiguo 28/11/2012, 15:32
 
Fecha de Ingreso: noviembre-2011
Ubicación: En 0-1
Mensajes: 68
Antigüedad: 12 años, 11 meses
Puntos: 0
De acuerdo Respuesta: Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

GRACIAS TMB A LIBRAS Y A GeriReshef... en breve les enseño como termino esta TELENOVELA
  #7 (permalink)  
Antiguo 29/11/2012, 05:22
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 3 meses
Puntos: 40
Respuesta: Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

Guapolomax- en mi pequño país son las vacas que hacen mu..
No se porque en tus tablas son los cocodrilos:
puede ser que es porque nuestras vacas hablan castellano peor que yo,
o porque tus cocodrilos han tomado demaciado cerveza..
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #8 (permalink)  
Antiguo 29/11/2012, 11:13
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 3 meses
Puntos: 180
Respuesta: Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

Son vacas, pero con cruza de cocodrilo, son vacocodrilo......
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 29/11/2012, 11:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 2 meses
Puntos: 774
Respuesta: Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

Mientras no sean cacadrilos todo perfecto jejejeje
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 11/12/2012, 10:58
 
Fecha de Ingreso: noviembre-2011
Ubicación: En 0-1
Mensajes: 68
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

Hola GeriReshef, si, ya sé que son las vacas las que hacen mu, quiza erré en mi explicación anterior... DE DONDE ERES EXACTAMENTE GeriReshef????
Estoy haciendo un algoritmo que vaya tomando las letras de un control TEXTBOX multiline y las vaya ordenando como palabras, para hacerlo hay qye tomar en cuenta cuando en como termina la palabra (" ", ",", ".", "?", "!", etc.) y después compararla con las características de mi base de datos. CUANDO TENGA LOS JPGs SE LOS MUESTRO :D
  #11 (permalink)  
Antiguo 11/12/2012, 13:44
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 3 meses
Puntos: 40
Respuesta: Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

Soy de Israel, y afortunadamente / lamentablemente (depende..) no tenemos cocodrilos..
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #12 (permalink)  
Antiguo 11/12/2012, 16:23
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 3 meses
Puntos: 180
Respuesta: Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

Geri, para no ser latino, dominas muy bien el español, Saludos.
__________________
MCTS Isaias Islas
  #13 (permalink)  
Antiguo 12/12/2012, 15:16
 
Fecha de Ingreso: noviembre-2011
Ubicación: En 0-1
Mensajes: 68
Antigüedad: 12 años, 11 meses
Puntos: 0
De acuerdo Respuesta: Base Conocimiento Consulta para encontrar un registro (Consulta Anidada)

Ah ok... :D aca si hay cocodrilos, pero nos hace falta vacas :D Manda un poco para Tabasco, México amigo :D Esta quedando bien el programita y el enlace con SQL Server :D

Etiquetas: artificial, conocimiento, inteligencia
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 00:59.