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

Mostrar datos de varias tablas

Estas en el tema de Mostrar datos de varias tablas en el foro de Mysql en Foros del Web. Hola. Tengo una base de datos con la siguientes tablas: serie (informacion de una serie) anime (informacion de un anime) userserie (informacion que un usuario ...
  #1 (permalink)  
Antiguo 17/07/2011, 07:40
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 7 meses
Puntos: 0
Mostrar datos de varias tablas

Hola. Tengo una base de datos con la siguientes tablas:

serie (informacion de una serie)
anime (informacion de un anime)

userserie (informacion que un usuario mete sobre la serie)
useranime (informacion que un usuario mete sobre un anime)

Y lo que quiero es que en el index me muestre todas las consultas de userserie y useranime donde el campo activo es igual a 1 y ordenarlo por el campo timestamp.

Asi dicho me parece sencillo pero una vez que me pongo a programarlo no me sale. El problema es que como las tablas serie y anime tienen campos diferentes.

Hasta ahora ha sido hacer la sigueinte consulta y me muestra todo correcto pero solo con la tabla series, y quisiera que tambien me mostrara la tabla anime y juntar los resultados y ordenarlos por el campo timestamp.

Código PHP:
$query 'SELECT user_serie.*, series.* FROM series INNER JOIN user_serie ON user_serie.idserie=series.id WHERE activo="1" AND iduser = '.$_COOKIE["id"].''
  #2 (permalink)  
Antiguo 17/07/2011, 07:50
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Mostrar datos de varias tablas

y mostranos el DER de las tablas, creo que tenes relacionar todas las tablas,
igual tener dos tablas de usuario no es lo mas comun...
  #3 (permalink)  
Antiguo 17/07/2011, 07:59
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Mostrar datos de varias tablas

en series tengo 3 campos: id, nombre y caratula, al igual que en anime

pero en user_series y en user_anime tengo campos diferentes, el problema es series y anime son dos cosas diferentes y la gente mete datos diferentes. Entonces no puedo ajuntar los datos de user_series y user_anime en una misma tabla, ya que los campos no son lo mismo, por eso lo he separado.
  #4 (permalink)  
Antiguo 17/07/2011, 08:28
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Mostrar datos de varias tablas

vos me estas diciendo que series y anime tienen los mismos campos pero con diferentes datos, verdad?
entonces por que no pones un campo bandera, que si esta en 1 es serie y si es 0 es anime?
no te parece mas facil?
ademas es una forma que se usa mucho
  #5 (permalink)  
Antiguo 17/07/2011, 08:52
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Mostrar datos de varias tablas

Eso lo hare mas adelante, ya que es mejor. Pero lo que quiero es mostrar los datos de user_series y user_anime todo y ordenado por un campo. Como lo podria mostar? He intentado UNION ALL pero al no tener los mismo campos...
  #6 (permalink)  
Antiguo 17/07/2011, 09:03
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Mostrar datos de varias tablas

user_series y user_anime tienen alguna relacion? por lo me decis creo que no.
te voy a hacer facil, pero desde ya te aviso que tu modelo no es el mejor.

Lo que podes hacer es dos consultas por separado select * from user_series y otra select * from user_anime y pasar todos los datos en un array, osea recorres la primer consulta y cargas los datos en un array, luego recorres la segunda query y guardas los datos en el mismo array y listo te queda el array con todos los datos
  #7 (permalink)  
Antiguo 17/07/2011, 09:48
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Mostrar datos de varias tablas

No, no tienen ninguna relacion.

Entonces cual serie el modelo correcto de hacerlo? Es que las bases de datos y yo, no nos entendemos muy bien. Se que la estructura de mi base de datos es un caos y no estan relacionadas ni nada. Pero me podrias orientas mas o menos como podria ser el modelo correcto? gracias.
  #8 (permalink)  
Antiguo 17/07/2011, 10:04
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Mostrar datos de varias tablas

te lo repito:
"vos me estas diciendo que series y anime tienen los mismos campos pero con diferentes datos, verdad?
entonces por que no pones un campo bandera, que si esta en 1 es serie y si es 0 es anime?"
  #9 (permalink)  
Antiguo 18/07/2011, 05:47
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Mostrar datos de varias tablas

Por lo que he podido entender, tienes 4 tablas:
- serie y userserie se relacionan entre sí a través de un id.
- anime y useranime se relacionan etre sí a través de un id.
- a su vez, serie-userserie y anime-useranime no se relacionan entre sí de ninguna forma.

La sentencia que tienes para series es la siguiente:
Código:
$query = 'SELECT user_serie.*, series.* FROM series INNER JOIN user_serie ON user_serie.idserie=series.id WHERE activo="1" AND iduser = '.$_COOKIE["id"].'';
Y quieres hacer lo mismo para Anime.

Pues bien, tal y como lo tienes no puedes hacerlo en la misma consulta, ya que como tú dices no se puede hacer UNION, porque las tablas tienen diferentes campos. Si lo que tienes es un bucle para recorrer el resultado de la sentencia que has puesto, tienes que hacer otro bucle para recorrer la otra sentencia, que sería algo así:

Código:
$query = 'SELECT user_anime.*, anime.* FROM anime INNER JOIN user_anime ON user_anime.idanime=anime.id WHERE activo="1" AND iduser = '.$_COOKIE["id"].'';
De todas formas, esto no deja de ser un parche, mi recomendación es que te mires un manual de diseño de bases de datos, porque me da la sensación de que tu base de datos está hecha sin pensar mucho. Una buena base de datos te puede simplificar muchísimo el código PHP.

Un saludo y espero que te sirva.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #10 (permalink)  
Antiguo 18/07/2011, 07:25
Avatar de Jota_sk  
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Mostrar datos de varias tablas

Gracias vgonga1986, la verdad es que has acertado en todo. La base de datos no esta pensado en nada, conforme he ido programando y he ido queriendo poner mas campos lo he ido haciendo manualmente. No había estructurado mi base de datos ni nada. Voy a buscar tutoriales de normalización de base de datos o algo que me puede ayudar. De todas formas sabes algún tutorial o algo que lo explique detallado y para tontos?

Gracias

Etiquetas: php, tabla, tablas, usuarios
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 02:13.