Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Relaciones de Tablas

Estas en el tema de Relaciones de Tablas en el foro de PHP en Foros del Web. ***Ante todo, gracias por tomarse el tiempo de por lo menos darme una guía para mi solución. Tengo una tabla llamada "reporte" y otra llamada ...
  #1 (permalink)  
Antiguo 26/03/2014, 15:20
 
Fecha de Ingreso: marzo-2014
Mensajes: 21
Antigüedad: 10 años
Puntos: 0
Relaciones de Tablas

***Ante todo, gracias por tomarse el tiempo de por lo menos darme una guía para mi solución.
Tengo una tabla llamada "reporte" y otra llamada "comentario" ( comentario es la que almacena los comentarios de ese reporte).
Pero el problema esta que no se como hacer para que cuando yo responda mas de una vez en la tabla "comentario" lo relacione con la tabla "reporte". Es para así cada vez que la persona vaya ver el estado de su reporte vea las observaciones que se han echo del mismo.
Les explico la tabla reporte:
1.- id- (campo INT, este genera automáticamente un número al generar un reporte)
2.-cdpd- (campo INT, se coloca el número de quien esta haciendo el reporte, el resultado de este número hace la consulta a otra tabla que te da el nombre y el apellido de la persona)
3.-dia-( este campo guarda automáticamente la fecha y hora en que se guardo con un TIMESTAMP)
4.-desc- ( este es un varchar, describe lo el reporte y lo que se solicita del mismo)

5.-coment- (este campo es INT, y debe contener los datos de la tabla "comentarios"

Le explico la tabla comentario:

1.-Idcoment- (campo INT, y debe asignar un numero )
2.-comentF- ( es un varchar y debe contener los comentarios sobre el X numero de reporte)
3.-date- ( es un TIMESTAMP y guarda la fecha en que se escribió el comentario)
4.-idreport- ( esta no estoy muy claro , pero pienso que allí debo de colocar el "id" de la tabla "reportes" para que haci se relacionen.

No se que tabla relacionar con cual, para que cuando consulta en una pagina web me arroje los comentarios escritos para un numero de reportes.
(el php lo estoy trabajando con dreamweaver y la base de datos con workbench)



Gracias.
  #2 (permalink)  
Antiguo 27/03/2014, 10:53
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Relaciones de Tablas

Es fácil lo que buscas.

Las tablas que necesitas son estas:

usuarios
-----------
id_usuario (primary key)
nombre
(los campos que quieras)

reportes
-----------
id_reporte (primary key)
(los campos que quieras)

comentarios
---------------
id_comentario
id_reporte
id_usuario
texto

Una vez tengas eso claro, es fácil. Por ejemplo, para ver todos los comentarios del reporte con id "4"

Código MySQL:
Ver original
  1. SELECT c.*, u.nombre
  2. FROM comentarios c INNER JOIN usuarios u ON u.id_usuario=c.id_usuario
  3. WHERE c.reporte="4";

Este Select te devolverá una lista con todos los comentarios del reporte y el usuario que hizo cada uno.

Última edición por gnzsoloyo; 31/03/2014 a las 14:37
  #3 (permalink)  
Antiguo 27/03/2014, 11:01
 
Fecha de Ingreso: marzo-2014
Mensajes: 21
Antigüedad: 10 años
Puntos: 0
Respuesta: Relaciones de Tablas

muchas gracias, ósea que lo que quieres decir es que NO ES necesario relacionar las tablas en el mismo Mysql, ya que los datos los puedo ingresarlos desde un *.php y buscar los datos insertados con otra consulta en otra pagina **.php???
  #4 (permalink)  
Antiguo 27/03/2014, 11:03
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Relaciones de Tablas

Desde luego con php puedes relacionar las tablas tranquilamente, sacar un array con los resultados y hacer lo que quieras con ellos.
A veces es mejor no complicarse tanto con las consultas a las tablas, especialmente si no manejas un volumen de millones de datos.
  #5 (permalink)  
Antiguo 27/03/2014, 11:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Relaciones de Tablas

Esa es, disculpas que lo diga así, una solucion propia de programadores, o más bien es un parche.
La consistencia e integridad de los datos nunca debe ser dejada al arbitrio de la aplicación. Esa es la mejor manera de provocar errores de los graves, además de que desd la óptica de diseño de sistemas estas acoplando innecesariamente la base a la aplicación.
Todo error en esta etapa lo pagaras con performance y errores de datos.
Tu eliges.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 31/03/2014, 14:08
 
Fecha de Ingreso: marzo-2014
Mensajes: 21
Antigüedad: 10 años
Puntos: 0
Respuesta: Relaciones de Tablas

ok, me han aclarado el punto de que para relacionar resultados no es necesarios hacerlo en el motor de base de datos,.

Pero como mencione anteriormente lo estoy trabajando con dreamweaver y me soluciono la relación de tablas ya que solo tengo que hacer un juego de registros sobre la tabla que deseo consultar y relacionarlos con una Label (lista de menu, que es alada de la tabla a relacionar) , pero ahora me nació otra interrogante similar a la pregunta principal. Cuando arroga el Resultado me devuelve el valor seleccionado (no esta mal), pero deseo nuevamente que aparezca con el nombre de la tabla cuyo valor fue elegido y no de manera de Label(lista de menu), ya que como es un resumen de lo elegido anteriormente se ve absurdo que aparezca nuevamente la lisa y uno un texto normal.
Agradeciera quien me podría ayudar a sacar el resultado en un texto no seleccionable, esto es lo que hasta el momento he podido lograr pero apareciendo en lista
Código PHP:
<select name="cargo" id="cargo">
        <?php
do {  
?>
        <option value="<?php echo $row_cargo['idcargos']?>"<?php if (!(strcmp($row_cargo['idcargos'], $row_DetailRS1['cargo']))) {echo "selected=\"selected\"";} ?>><?php echo $row_cargo['cargos']?></option>
        <?php
} while ($row_cargo mysql_fetch_assoc($cargo));
  
$rows mysql_num_rows($cargo);
  if(
$rows 0) {
      
mysql_data_seek($cargo0);
      
$row_cargo mysql_fetch_assoc($cargo);
  }
?>
    </select>
Gracias.
  #7 (permalink)  
Antiguo 31/03/2014, 14:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Relaciones de Tablas

Cita:
ok, me han aclarado el punto de que para relacionar resultados no es necesarios hacerlo en el motor de base de datos,
No. Eso es un parche, no una solución. Nadie que entienda y se dedique a las bases de datos profesionalmente te dará semejante consejo.
No tiene ningún sentido hacer en la aplicación cosas que la base de datos hace mejor, ni tampoco hacer cosas que terminan conspirando cntra la base.
No te lo aconsejo.

Cita:
deseo nuevamente que aparezca con el nombre de la tabla cuyo valor fue elegido y no de manera de Label(lista de menu), ya que como es un resumen de lo elegido anteriormente se ve absurdo que aparezca nuevamente la lisa y uno un texto normal.
Las consultas a la base no devuelven el nombre de la tabla que las origina. Eso lo manejas tu mismo en la lógica de las consultas, y por ende, está fuera del alcance de la base.

OFF-TOPIC en MySQL.

Movido a PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 16/04/2014, 09:44
 
Fecha de Ingreso: marzo-2014
Mensajes: 21
Antigüedad: 10 años
Puntos: 0
Respuesta: Relaciones de Tablas

Cita:
Iniciado por liranan Ver Mensaje
Es fácil lo que buscas.

Las tablas que necesitas son estas:

usuarios
-----------
id_usuario (primary key)
nombre
(los campos que quieras)

reportes
-----------
id_reporte (primary key)
(los campos que quieras)

comentarios
---------------
id_comentario
id_reporte
id_usuario
texto

Una vez tengas eso claro, es fácil. Por ejemplo, para ver todos los comentarios del reporte con id "4"

Código MySQL:
Ver original
  1. SELECT c.*, u.nombre
  2. FROM comentarios c INNER JOIN usuarios u ON u.id_usuario=c.id_usuario
  3. WHERE c.reporte="4";

Este Select te devolverá una lista con todos los comentarios del reporte y el usuario que hizo cada uno.
Muchas gracias, me costo un poco resolverlo ya que lo tenia en dreamweaver, pero después me percate en el "$query_ " en la consulta sql era que lo tenia que colocar lo que me escribiste

Etiquetas: campo, mysql, relaciones, tabla, tablas
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 04:17.