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

[SOLUCIONADO] Diferenciar de qué base de datos es cada resultado

Estas en el tema de Diferenciar de qué base de datos es cada resultado en el foro de Mysql en Foros del Web. Buenas tardes. Antes de nada, gracias por la ayuda y por leer el "ladrillo". Tengo 2 webs cada una con su base de tados. Cada ...
  #1 (permalink)  
Antiguo 19/01/2015, 19:22
 
Fecha de Ingreso: octubre-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 1
Información Diferenciar de qué base de datos es cada resultado

Buenas tardes.

Antes de nada, gracias por la ayuda y por leer el "ladrillo".

Tengo 2 webs cada una con su base de tados. Cada base de datos tiene una tabla con las opiniones de los clientes. Ambas webs alojadas en el mismo servidor y con un usuario a la base de datos común.

web1->basededatos1->tablaopiniones1->campos nombre,opinion,fecha
web2->basededatos2->tablaopiniones2->campos nombre,opinion,fecha

Ahora quiero mostrar en una web general las opiniones de ambas webs ordenadas por fecha, de tal manera que si alguien deja una opinión en alguna de las dos webs, aparezca la primera en esta web general (en realidad son muchas mas webs de 2, pero para simplificar lo dejamos en 2).

el caso es que hago una única consulta con el operador UNION para en un solo paso tenerlo listo:


Código MySQL:
Ver original
  1. SELECT nombre,opinion,fecha FROM basededatos1.tablaopiniones1
  2. SELECT nombre,opinion,fecha FROM basededatos2.tablaopiniones2

Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las reglas del foro, por favor.

Con ello consigo que funcione y me muestre un listado de opiniones de ambas webs ordenado por fecha de mas reciente a mas antiguo, indicando fecha, el nombre en rojo y finalmente la opinión.

Lo que quiero es que me diferencia de que base de datos es cada la opinión, por ejemplo, mostrando al final del "echo" un texto "web1" o "web2".

He pensado hacerlo creando un campo personalizado en la tabla opiniones de cada base de datos y finalmente recuperarlo en la cosulta y sacarlo en el "echo", pero me parece un poco "chapuza" y poco elegante.

Supongo que se podrá diferencia de alguna manera en la consulta para no tener que tocar las bases de datos.

Muchas gracias por vuestra ayuda.

Última edición por gnzsoloyo; 20/01/2015 a las 03:59
  #2 (permalink)  
Antiguo 20/01/2015, 04:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Diferenciar de qué base de datos es cada resultado

Ningún DBMS discrimina de donde viene un resultado cuando es una consulta a N bases. Para el DBMS es un mismo resultado indiferenciado. La única posibilidad de lograr esa discriminación es generar una columna adicional, virtual, en cada SELECT para indicar su origen.
En tu caso, además, estás poniendo el ORDER BY que afecta todo el resultado, por lo que los registros no se ordenarán agrupandose por base, sino por resultado de esos campos indicados.
Código MySQL:
Ver original
  1. SELECT 'Base1' base, nombre, opinion, fecha FROM basededatos1.tablaopiniones1
  2. SELECT 'Base2' base, nombre, opinion, fecha FROM basededatos2.tablaopiniones2
  3. ORDER BY base, fecha DESC
Lo restante, el como lo muestres en pantalla y los colores que quieras ponerle no es tema de este foro. Lo tendrás que ver en el de PHP, que es lo que posteaste. En los foros d BBDD sólo miramos los problemas de SQL y estructura de datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 20/01/2015, 04:32
 
Fecha de Ingreso: octubre-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 1
Respuesta: Diferenciar de qué base de datos es cada resultado

Muchas gracias gnzsoloyo por tu tiempo y tus conocimientos.

Era exactamente eso lo que necesitaba.

Disculpa lo del código php, no sabía que no se podía poner para clarificar la duda.

Lo de mostrarlo en pantalla no era el problema, de hecho, la manera de sacar el nuevo campo virtual es como el resto, no hay ninguna diferencia.

Lo dicho, muchas gracias por tu tiempo.

Un saludo.

Etiquetas: cada, campo, diferenciar, fecha, php, resultado, select, sql, tabla
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:52.