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

Sugerencias sobre consulta

Estas en el tema de Sugerencias sobre consulta en el foro de Mysql en Foros del Web. Hola a todos antes que nada, el motico por el cual visito este foro es para ver si alguien me puede orientar sobre como construir ...
  #1 (permalink)  
Antiguo 22/09/2008, 09:41
Avatar de elmasca  
Fecha de Ingreso: enero-2004
Ubicación: Mexico
Mensajes: 108
Antigüedad: 20 años, 3 meses
Puntos: 0
Pregunta Sugerencias sobre consulta

Hola a todos antes que nada, el motico por el cual visito este foro es para ver si alguien me puede orientar sobre como construir la consulta SQL para un problemita que tengo, el cual se los detallo a continuacion:

1.- Tengo una Base de Datos con 2 tablas que estan relacionas, esta base de datos contiene informacion acerca de publicaciones cientificas.

2.- La estructura de la BD en algo general sin detallar todo seria lo sig:

Tabla 1
*Id_pub
*Titulo
*Año
*Area

Tabla 2
*Id_ins
*Institucion
*Pais
*Continente
*Id_pub

***Como podran observar la relacion es de uno a muchos (Una publicacion escrita por varias instituciones de uno o mas paises).

3.- Lo que me han pedido hacer es que obtenga todas aquellas publicaciones que tengan por ejemplo: Las publicaciones de Argentina con paises de Europa.

***Yo hice lo siguiente

SELECT *FROM Tabla1,Tabla2 WHERE Tabla1.Id_pub = Tabla2.Id_pub AND Pais = "Argentina"

Esto si me extrae todas las publicaciones hechas por Argentina, pero recordemos que tambien en varios de esas publicaciones intervinieron paises europeos que estan englobados en el Campo de Continente entonces por logica dentro de la sentencia no puedo darle AND (Pais = "Argentina" AND Continente = "Europa") porque pues no em daria nada.

Mi pregunta es: Como hago para extraer las publicaciones de Argentina con paises de Europa?, Se debe hacer subconsultas u otra cosa dentro de la consulta?

De ante mano muchas gracias y espero alguien pueda de verdad ayudarme.

__________________
"El conocimiento se debe de compartir"
  #2 (permalink)  
Antiguo 22/09/2008, 09:54
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Sugerencias sobre consulta

Cita:
Iniciado por elmasca Ver Mensaje
SELECT *FROM Tabla1,Tabla2 WHERE Tabla1.Id_pub = Tabla2.Id_pub AND Pais = "Argentina"

Esto si me extrae todas las publicaciones hechas por Argentina, pero recordemos que tambien en varios de esas publicaciones intervinieron paises europeos que estan englobados en el Campo de Continente entonces por logica dentro de la sentencia no puedo darle AND (Pais = "Argentina" AND Continente = "Europa") porque pues no em daria nada.

Mi pregunta es: Como hago para extraer las publicaciones de Argentina con paises de Europa?, Se debe hacer subconsultas u otra cosa dentro de la consulta?
Luego en "continente" no tienes "Europa"?? O luego que hay en continente??? No dices que ahí están "englobados"?

Si ese campo no te sirve, pues no está bien diseñada tu DB...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 22/09/2008, 10:31
Avatar de elmasca  
Fecha de Ingreso: enero-2004
Ubicación: Mexico
Mensajes: 108
Antigüedad: 20 años, 3 meses
Puntos: 0
Respuesta: Sugerencias sobre consulta

Antes que nada gracias por tu atencion hacia mi pregunta, bueno te explico brevemente lo que hay dentro de la tabla, como dices igual no esta bien diseñada e igual puedo recibir sugerencias si es que estoy mal.

En esta tabla esta la infiormacion acerca de las instituciones:

Ejemplo:

Tabla1
Id_pub: 00199
Titulo: Investigacion de las plantas
Año: 2006
Area: Biología


Tabla2
Id_ins: 12
Institucion: Universidas de Buenos Aires
Pais: Argentina
Continente: America
Id_pub: 00199

Id_ins: 201
Institucion: Instituto de Biologia
Pais: España
Continente: Europa
Id_pub: 00199

No se si con esto que mostre sea un poco mas amplio el panorama, la idea es extraer todas las publiaciones que tienen en sus instituciones de colaboracion a Argentina con paises de Europa "por eso tenemos en campo continente".

De verdad si no me explico bien o hay dudas diganme y yo vuelvo a poner mas informacion para que me puedan ayudar.

Gracias de verdad
__________________
"El conocimiento se debe de compartir"
  #4 (permalink)  
Antiguo 22/09/2008, 13:27
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Sugerencias sobre consulta

Hola elmasca...

Según entiendo, por los datos que muestras, es que la publicación 00199 tiene dos instituciones colaboradoras: " Universidas de Buenos Aires" y "Instituto de Biologia " de Argentina y España respectivamente no??

Ahora dime, ese campo "continente" en la tabla 2, es una llave foránea(fk) de alguna tabla "continentes"?? Es decir, es entero?? O cómo manejas dicho campo?? Codificado? sin codificar?

Otra pregunta mas... ese mismo campo(continente) hace referencia al continente al que pertenece el campo "pais"?? Es decir, colocas, Argentina, América..., España, Europa, eso quiere decir que Argentina es del continente Europeo y España del continente Europeo? Si es así... para qué dejarlo? Si sabes que un país solo pertenece a un continente...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 22/09/2008, 16:31
Avatar de elmasca  
Fecha de Ingreso: enero-2004
Ubicación: Mexico
Mensajes: 108
Antigüedad: 20 años, 3 meses
Puntos: 0
Respuesta: Sugerencias sobre consulta

Hola carxl me da mucho gusto el interes prestado por tu parte el ayudarme en este problemilla que al igual me viaje un poco en el manejo de mis datos.

Bien te explico, pues mira la tabla2 no hace ninguna referencia a ningun otra tabla como lo mencionas, lo que pasa es que yo puse ese campo de continente en la tabla porque pues sabemos que los continentes tienen varios paises, entonces a mi me solicitaron que "Obtenga todos las publicaciones en donde colabora Argentina con alguno de los paises de Europa", entonces pues para no poner "(Pais = 'Argentina') AND (Pais='España' OR Pais='Holanda') etc ...." Cosa que esta mal porque ó Pais es Argentina ó es España para el registro con el Id_ins = 12, porque lo que quiero obtener es que aquellos registros de la tabla 2 con el Id_pub = 00199 que tengan a Pais = Argentina y que ese mismo Id_pub = 00199 tenga tambien (olvidando ya lo de el continente) Pais = "España", me arroje esos dos registros Id_ins = 12 y Id_ins = 201.

Entonces una publicacion tiene siempre mas de una institucion entonces mi consulta tiene que dar como resultado algo asi:

Investigacion de las plantas 2006 Universidad de Buenos Aires Argentina
Investigacion de las plantas 2006 Instituto de Biologia España


Si en lugar de estar el Instituto de Biologia España, estuviera la Universidad de Sao Paulo Brazil entonces esa publicacion no coincidiria con lo que estoy pidiendo que es aquellas publicaciones que tienen a Argentina + cuaquier pais de Europa.

No se si yo mismo este enredando esto jejeje. Digo de igual manera diseñe mal la tabla numero 2 que es donde estan los datos de las instituciones y el pais al que pertenecen.

De verdad igual me estoy expresando mal en mi problema.

Pero si igual ya te desespere o no me hago entender dimelo y pongo hasta un poco de la base de datos aqui para ver si me explico un poco mejor.

De ante mano muchisisisisisimas gracias !!!!
__________________
"El conocimiento se debe de compartir"
  #6 (permalink)  
Antiguo 22/09/2008, 17:24
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Sugerencias sobre consulta

Prueba esto:

Código:
SELECT *FROM Tabla1,Tabla2 WHERE Tabla1.Id_pub = Tabla2.Id_pub AND (Pais = "Argentina" or continente="Europa") 
A ver que te sale

Pero sigo insistiendo, deberías normalizar la tabla 2, bueno al menos codificar los continentes así no tengan una tabla como tal.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
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 10:01.