Foros del Web » Programando para Internet » PHP »

Hacer una consulta relacionando dos tablas

Estas en el tema de Hacer una consulta relacionando dos tablas en el foro de PHP en Foros del Web. hola, buenas noches. Tengo un enredo de como hacer bien la consulta, ando creando una pagina donde tengo 2 tablas ==Tabla1:== escritores: id_escritores nombre_escritor biografia_escritor ...
  #1 (permalink)  
Antiguo 29/11/2015, 23:23
Avatar de Dimetrix  
Fecha de Ingreso: diciembre-2012
Ubicación: Venezuela
Mensajes: 13
Antigüedad: 11 años, 3 meses
Puntos: 0
Información Hacer una consulta relacionando dos tablas

hola, buenas noches.

Tengo un enredo de como hacer bien la consulta, ando creando una pagina donde tengo 2 tablas

==Tabla1:==

escritores:
id_escritores
nombre_escritor
biografia_escritor
imagen_escritor

==Tabla2==

libros:
id_libros
nombre_escritor
nombre_libro
link_libro


He leido sobre Key principal y Key foranea donde mi key principal es (nombre_escritor de la tabla "escritores") y la key foranea es (nombre_escritor de la tabla "libros")

Tengo un listado de escritores seleccionados por sus iniciales y por medio de una variable url GET envio el nombre del escritor a la pagina "escritor.php" donde quisiera que me mostrara (Su imagen, Su nombre, Su biografia de la tabla escritor y todos los libros que tiene ese escritor de la tabla libros)

la consulta que tengo es la siguiente

Código MySQL:
Ver original
  1. FROM escritores INNER JOIN libros ON libros.nombre_escritor = escritor.nombre_escritor
  2. WHERE escritores.nombre_artista = varID

varID = id

escritor.php?id=nombre_escritor

esta consulta que les coloque me esta mostrando todos los escritores y todos los libros

no me esta filtrando la informacion referente al escritor que le envio por url una variable con el nombre del escritor


la verdad no se que estoy haciendo mal.
  #2 (permalink)  
Antiguo 30/11/2015, 09:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Hacer una consulta relacionando dos tablas

Eso es mas referente a programacion no a base de datos....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 30/11/2015, 09:30
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: Hacer una consulta relacionando dos tablas

OFF TOPIC en BBDD.

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)
  #4 (permalink)  
Antiguo 30/11/2015, 11:37
Avatar de Dimetrix  
Fecha de Ingreso: diciembre-2012
Ubicación: Venezuela
Mensajes: 13
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Hacer una consulta relacionando dos tablas

habia hecho un tema algo parecido a este en php y me dijeron que iba en mysql :S.... bueno alguien tiene idea de como solucionar ?
  #5 (permalink)  
Antiguo 30/11/2015, 12:08
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: Hacer una consulta relacionando dos tablas

Te pasamos el post a PHP porque MySQL no recibe parametros por URL, esa tarea la haces en PHP, por lo que lo primero que tienes que verificar es que los datos entrantes por URL esté realmente llegando.
Si los parametros no llegan, o no son los que supones que deben ser, y no lo validas, luego intentarás crear la consulta con ellos, y dependiendo de cómo lo hagas pueden o no dar errores de sintaxis, o no devolver datos, con lo que le echarías la culpa a la base... cuando en realidad es un defecto de datos de PHP.

Postea el codigo donde tomas los datos que vienen por URL, el que corresponda al armado de la consulta y entonces veremos por donde falla la cosa.

No asumas que el problema es de SQL hasta que hayas descartado que provenga de 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)
  #6 (permalink)  
Antiguo 30/11/2015, 12:15
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 4 meses
Puntos: 26
Respuesta: Hacer una consulta relacionando dos tablas

Ademas...

Cita:
Iniciado por Dimetrix Ver Mensaje
hola, buenas noches.
escritores:
id_escritores
nombre_escritor
biografia_escritor
imagen_escritor

Código MySQL:
Ver original
  1. FROM escritores INNER JOIN libros ON libros.nombre_escritor = escritor.nombre_escritor
  2. WHERE escritores.nombre_artista = varID
En la consulta haces una referencia a "escritores.nombre_artista", sin embargo en la tabla escritores no hay ninguna columna con nombre_artista.

Saludos.
  #7 (permalink)  
Antiguo 30/11/2015, 12:24
Avatar de Dimetrix  
Fecha de Ingreso: diciembre-2012
Ubicación: Venezuela
Mensajes: 13
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Hacer una consulta relacionando dos tablas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Te pasamos el post a PHP porque MySQL no recibe parametros por URL, esa tarea la haces en PHP, por lo que lo primero que tienes que verificar es que los datos entrantes por URL esté realmente llegando.
Si los parametros no llegan, o no son los que supones que deben ser, y no lo validas, luego intentarás crear la consulta con ellos, y dependiendo de cómo lo hagas pueden o no dar errores de sintaxis, o no devolver datos, con lo que le echarías la culpa a la base... cuando en realidad es un defecto de datos de PHP.

Postea el codigo donde tomas los datos que vienen por URL, el que corresponda al armado de la consulta y entonces veremos por donde falla la cosa.

No asumas que el problema es de SQL hasta que hayas descartado que provenga de PHP.
Código PHP:
$varID_canciones_artistas "0";
if (isset(
$_GET["id"])) {
  
$varID_canciones_artistas $_GET["id"];

ando usando dreamweaver, cuando hago la consulta le doy una variable varID diciendole que recibira datos de la variable que viene por url id
  #8 (permalink)  
Antiguo 30/11/2015, 12:28
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: Hacer una consulta relacionando dos tablas

Eso no alcanza.
Postea TODO el codigo PHP donde se recibe el conjunto de parámetros.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 30/11/2015, 12:30
Avatar de Dimetrix  
Fecha de Ingreso: diciembre-2012
Ubicación: Venezuela
Mensajes: 13
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Hacer una consulta relacionando dos tablas

Cita:
Iniciado por fido-strike Ver Mensaje
Ademas...



En la consulta haces una referencia a "escritores.nombre_artista", sin embargo en la tabla escritores no hay ninguna columna con nombre_artista.

Saludos.
tienes razon amigo, es nombre_escritor, es que me he estado guiando de otras informaciones y ejemplos que he leido... pero es nombre_escritor
  #10 (permalink)  
Antiguo 30/11/2015, 12:36
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: Hacer una consulta relacionando dos tablas

Ok...
¿Y en qué momento esto:
Código PHP:
Ver original
  1. $varID_canciones_artistas
se transforma en varID y se inserta en esto:

Código MySQL:
Ver original
  1. ...
  2. WHERE escritores.nombre_artista = varID

Recuerda que la base de datos no lee ni interpreta PHP. En algun momento tienes que crear la consulta con los datos que contienen las variables.
¿Como sabes que las variables contienen ALGO? El isset() sólo verifica que existan, no que el valor contenido sea válido.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 30/11/2015, 12:44
Avatar de Dimetrix  
Fecha de Ingreso: diciembre-2012
Ubicación: Venezuela
Mensajes: 13
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Hacer una consulta relacionando dos tablas

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4.  
  5. $varID_libros_escritores = "0";
  6. if (isset($_GET["id"])) {
  7.   $varID_libros_escritores = $_GET["id"];
  8. }
  9. mysql_select_db($database_weblibro, $weblibro);
  10. $query_libros_escritores = sprintf("SELECT * FROM escritores JOIN libros ON libros.nombre_escritor = escritores.nombre_escritor WHERE escritores.nombre_escritor = %s", GetSQLValueString($varID_libros_escritores, "int"));
  11. $libros_escritores = mysql_query($query_libros_escritores, $weblibro) or die(mysql_error());
  12. $row_libros_escritores = mysql_fetch_assoc($libros_escritores);
  13. $varID_libros_escritores = "0";
  14. if (isset($_GET["id"])) {
  15.   $varID_libros_escritores = $_GET["id"];
  16. }
  17. mysql_select_db($database_weblibro, $weblibro);
  18. $query_libros_escritores = sprintf("SELECT * FROM escritores INNER JOIN libros ON libros.nombre_escritor = escritores.nombre_escritor WHERE escritores.nombre_escritor = %s", GetSQLValueString($varID_libros_escritores, "int"));
  19. $libros_escritores = mysql_query($query_libros_escritores, $weblibro) or die(mysql_error());
  20. $row_libros_escritores = mysql_fetch_assoc($libros_escritores);
  21. $totalRows_libros_escritores = mysql_num_rows($libros_escritores);
  22.  
  23.  
  24. ?>

ese es el codigo, ando usando dreamweaver y use de referencia unos codigos que usaron para artista y canciones de artistas... ya que usare para mi escritores y libros de escritores.

Etiquetas: join, mysql, select, 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 00:10.