Foros del Web » Programando para Internet » PHP »

Como hacer una consultas a dos tablas ?

Estas en el tema de Como hacer una consultas a dos tablas ? en el foro de PHP en Foros del Web. Hola amigos eh buscado infomracion pero no me queda muy clrao y cunado lo intento me da un error hago esto con esto codigo para ...
  #1 (permalink)  
Antiguo 31/05/2016, 10:06
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Como hacer una consultas a dos tablas ?

Hola amigos eh buscado infomracion pero no me queda muy clrao y cunado lo intento me da un error

hago esto con esto codigo para sacar los resultados de dos tablas en uan consulata

Código PHP:
Ver original
  1. $info_post=mysqli_query($conexion, "SELECT nick,titulo,contenido,fecha FROM post , jugadores WHERE id = '".$id."'");
  2.     while($done = mysqli_fetch_array($info_post))
  3.     {
  4.     //parte del post
  5.     echo "<br> $done[nick]";
  6.     echo "<br> $done[titulo]";
  7.     echo "<br> $done[contenido]";
  8.     echo "<br> $done[fecha]";
  9.     include'funciones/post/post_comentario.php';
  10.     }

este es el erro que em sale Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\roomvs\funciones\post\index.php on line 28

como lo puedo lograr ?
  #2 (permalink)  
Antiguo 31/05/2016, 10:24
 
Fecha de Ingreso: abril-2016
Mensajes: 65
Antigüedad: 8 años
Puntos: 4
Respuesta: Como hacer una consultas a dos tablas ?

Código PHP:
Ver original
  1. $info_post=mysqli_query($conexion, "SELECT nick,titulo,contenido,fecha FROM post , jugadores WHERE id = $id");

Ponlo asi sin esas tus comillas, creo que ahi esta tu error
aparte debes poner tabla.columa agrega eso a tu query
  #3 (permalink)  
Antiguo 31/05/2016, 10:31
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Como hacer una consultas a dos tablas ?

use el ejemplo que pusiste me dio el mismo error pero no le puse tabla.columa en que lugar pongo eso despues del select o después del from
  #4 (permalink)  
Antiguo 31/05/2016, 11:32
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: Como hacer una consultas a dos tablas ?

Debes aprender a diferencias mysql de php. No todo lo vas a postear acá. En el foro de BD te darán mejores respuestas. Sin embargo, con lo que sé, lo que intentas hacer no se puede.
En primera, la columna "id" puede ser ambigua, en segunda, ¿el nick del post y del jugador es el mismo?, y por último primero prueba tus consultas en el SMBD para controlar los errores.

Necesitarás de algun INNER, LEFT o RIGHT join.

Código SQL:
Ver original
  1. SELECT t1.id, t1.campo1, t2.campo2 FROM tabla1 t1 INNER JOIN tabla2 t2 ON t1.id = t2.id WHERE id = $id;


Algo así es la estructura de inner join. Esperemos que el buen @gnzsoloyo venga por aquí, o tú mismo publica este post en BD. Saludos
  #5 (permalink)  
Antiguo 31/05/2016, 12:04
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Como hacer una consultas a dos tablas ?

lo estoy probando en el sql de phpmyadmin la consulta pero cuando pongo después de FROM el nombre de la tabla me dice se encontró anteriormente un alias
  #6 (permalink)  
Antiguo 31/05/2016, 12:07
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: Como hacer una consultas a dos tablas ?

Qué consulta estás ejecutando? Posteala por favor.
  #7 (permalink)  
Antiguo 31/05/2016, 12:11
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Como hacer una consultas a dos tablas ?

esta
Código SQL:
Ver original
  1. SELECT id,id_post form  post INNER JOIN jugadores   ON id=id_post
  #8 (permalink)  
Antiguo 31/05/2016, 12:19
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: Como hacer una consultas a dos tablas ?

form? No es FROM?

Como consejo, cuando trabajes con dos o mas tablas en una misma consulta, ponles antes de la columna, el nombre de la tabla a la que te estás refiriendo.
  #9 (permalink)  
Antiguo 31/05/2016, 12:38
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Como hacer una consultas a dos tablas ?

perdon yo siempre de idiota ya lo puse bien
esta es la consulta pero me da un error
Código SQL:
Ver original
  1. SELECT id,id_post FROM  post INNER JOIN jugadores  ON id=id_post

error
#1052 - Column 'id' in field list is ambiguous
  #10 (permalink)  
Antiguo 31/05/2016, 12:53
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: Como hacer una consultas a dos tablas ?

Creo que no tomas todo lo que te tratamos de explicar.

Necesitas poner a qué tabla te estás refiriendo, debido a que la columna "id" está en post y en jugadores. Y mysql no puede distinguirlo.
  #11 (permalink)  
Antiguo 31/05/2016, 12:56
 
Fecha de Ingreso: abril-2016
Mensajes: 65
Antigüedad: 8 años
Puntos: 4
Respuesta: Como hacer una consultas a dos tablas ?

Creo que recien estas empezando en sql por eso no entiendes bien pero te explico.
Digamos que tienes la tabla alumo y materia

Alumno
Id_alumno
Nombre
Apellido

Materia
Id_materia
Id_alumno
Nombre

Si quisieras hacer un Select de esas dos tablas tienes que indicar primero la tabla y luego la columna es decir

select * from alumno, materia where materia.id_materia = '4' and alumno.nombre = 'Juan'

espero entiendas un poco más
  #12 (permalink)  
Antiguo 31/05/2016, 13:19
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Como hacer una consultas a dos tablas ?

hice esta consulata en SQl dentro de phpmyadmin y me resulta bien

Código SQL:
Ver original
  1. SELECT P.id,J.id FROM post P INNER JOIN jugadores J ON J.id=P.id

pero cuando hago lo mismo en el archivo PHP me da un error de sintaxis

Código PHP:
Ver original
  1. $info_post=($conexion, "SELECT P.id,J.id FROM post P INNER JOIN jugadores J ON J.id=P.id")
  2.     while($done = mysqli_fetch_array($info_post))
  3.     {
  4.     //parte del post
  5.     echo "<br> $done[id]";
  6.     #echo "<br> $done[id]";
  7.    #echo "<br> $done[contenido]";
  8.    #echo "<br> $done[fecha]";
  9.  
  10.     }

error
Parse error: syntax error, unexpected ',' in C:\xampp\htdocs\roomvs\funciones\post\index.php on line 28

la linea 28 se refiera a esta linea
Código PHP:
Ver original
  1. $info_post=($conexion, "SELECT P.id,J.id FROM post P INNER JOIN jugadores J ON J.id=P.id")
  #13 (permalink)  
Antiguo 31/05/2016, 13:24
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Como hacer una consultas a dos tablas ?

Solo te falta un punto y coma, te lo esta diciendo:

Código PHP:
Ver original
  1. $info_post=($conexion, "SELECT P.id,J.id FROM post P INNER JOIN jugadores J ON J.id=P.id") ;

Tambien te falta agregarle mysqli_query.

Código PHP:
Ver original
  1. $info_post=mysqli_query($conexion, "SELECT P.id,J.id FROM post P INNER JOIN jugadores J ON J.id=P.id") ;
  #14 (permalink)  
Antiguo 31/05/2016, 13:34
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Como hacer una consultas a dos tablas ?

kip13 esa era la repuesta correcta tengo que hacer que imprima varios datos lo voy a intentar cual si no me sale les comento y si lo resuelvo publico el codigo para los demas que lo necesiten.
  #15 (permalink)  
Antiguo 31/05/2016, 13:44
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 9 meses
Puntos: 39
Respuesta: Como hacer una consultas a dos tablas ?

A ver te lo han explicado ya, mira, imagina que estamos en un colegio y tenemos dos aulas, en ambas aulas hay un alumno que se llama Juan y yo te digo, traeme a Juan. A ti te surgirá una duda, ¿Qué Juan, el del aula 1 o el del aula 2?

Pues con el error que te está dando la consulta esta pasando eso mismo, MySql query te está diciendo ¿Que ID?

Tu consulta debería quedar así:

Código MySQL:
Ver original
  1. SELECT post.id, jugadores.id_post FROM post INNER JOIN jugadores ON post.id = jugadores.id_post

OJO!! Esta consulta te va a dar los mismos reusultados, porque tu estás relacionando la tabla de jugadores con la de post a través del id de la tabla post. Por lo tanto esta consulta te arrojará los id de los post que haya en ambas tablas, es decir, si tienes diez registros en la tabla post y cinco en la tabla jugadores que están relacionados con cinco post, te arrojará los cinco id de los post que estén en ambas tablas.

Si por ejemplo, los datos que quieres coger son el nombre de los jugadores y la fecha del post (pongo un ejemplo, desconozco los campos de tus tablas), tendrías que poner algo así:


Código MySQL:
Ver original
  1. SELECT post.id, post.fecha, jugadores.nombre FROM post INNER JOIN jugadores ON post.id = jugadores.id_post

Esta consulta te arrojará el id y la fecha de los post y los nombres de los jugadores que haya forzosamente en ambas tablas, es decir, lo que hará será buscarte las coincidencias de id entre las tabla post y la tabla jugadores (INNER JOIN jugadores ON post.id = jugadores.id_post). Si en la tabla jugadores no tienes ningún post_id que coincidad con el id de alguno de los post, esta consulta no te arrojará resultados y si los tiene pues te arrojara una lista de resultados con el id del post, la fecha del post y el nombre de los jugadores cuyo id_post coincidan con el id de algún post.

No sé si me he explicado bien. Si después quieres por ejemplo poner alguna condición WHERE como por ejemplo, de fecha, es decir una fecha mayor al año 2016 sería algo así:

Código MySQL:
Ver original
  1. SELECT post.id, post.fecha, jugadores.nombre FROM post INNER JOIN jugadores ON post.id = jugadores.id_post WHERE post.fecha > '2016-01-01'

Como puedes ver, delante del campo concreto, tienes que poner la tabla a la que nos estamos refiriendo separándo la tabla del campo por un punto, que sería lo mismo que en el ejemplo que puse al principio, traeme a Juan del aula 1, (SELECT aula_1.nombre FROM aula_1 WHERE aula_1.nombre = 'JUAN')
__________________
Diseño Web - Arisman Web
  #16 (permalink)  
Antiguo 31/05/2016, 19:32
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Como hacer una consultas a dos tablas ?

Gracias amigo manuparquegiralda muy bien explicado funciona pero... tengo un problemita :(

Lo que pasa es que en mi resultado quiero imprimir todos los jugadores que coincidan con el id de la tabla post y eso funciona a la perfección el problema es que en la tabla post existe solo un dato de la fecha por ejemplo y en mi caso quiero imprimir los jugadores pero la fecha que salga una sola vez yo pensé que por lógica solo imprimirá una ya que eso es lo que existe en la base de datos pero me la duplica todas las veces que exista un jugador :C

solo quiero que imprima los jugadores que son muchos y una sola fecha un solo titulo y asi.
que dirán ustedes lo pro en la materia y tiene arte experiencia
se podra hacer eso... le estoy dando mente aver.
  #17 (permalink)  
Antiguo 01/06/2016, 10:17
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 9 meses
Puntos: 39
Respuesta: Como hacer una consultas a dos tablas ?

A ver, MySql te va a arrojar todos los datos, es decir te arrojará algo as:

Cita:

post.id---------post.fecha-------jugadores.id--------jugadores.nombre

----1----------------------2016-05-30---------------------1-------------------------------Juan
----1----------------------2016-05-30---------------------2-------------------------------Alberto
----1----------------------2016-05-30---------------------3-------------------------------Alejandro
----1----------------------2016-05-30---------------------4-------------------------------Ramón
Como has dicho te va a arrojar siempre el id y la fecha del post, pero, puesto que estás en el foro PHP, deduzco que estos datos los vas a tratar con PHP. ¿Qué más te da que te arroje múltiples veces el id y la fecha aunque estén repetidos?

Que yo sepa, no se puede hacer que MySql haga lo que pides, es decir, te va a devolver siempre estos datos, pero imagino que no estás mostrando tu tabla directamente desde MySql.

Tu obtienes todos los datos y después con PHP, HTML y CSS puedes crear la tabla como tu quieras y que se muestre por ejemplo así:

Cita:

Fecha: 30/05/2016

--------------------------------------------------------------------------------------

IDENTIFICADOR---------------------NOMBRE

----------1--------------------------------------------Juan
----------2--------------------------------------------Alberto
----------3--------------------------------------------Alejandro
----------4--------------------------------------------Ramón
Eso ya depende de como lo quieras maquetar, pero si lo que quieres es mostrar la tabla sin tratar, creo, repito, creo que no se puede, MySql te arrojará todos los datos en cada fila que te devuleva y si evitas que se repitan por ejemplo, agrupándolo por fechas, no te arrojará todos los jugadores.
__________________
Diseño Web - Arisman Web
  #18 (permalink)  
Antiguo 01/06/2016, 17:31
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Como hacer una consultas a dos tablas ?

Yo hice esto... Como tengo dos tablas post contiene un título una fecha, bueno uno de todo y jugadores es el que tiene un equipo de jugadores carlos, jose, pedro, wilson. Pues hice dos consultas, lo bien es que puedo poner la tabla post que contiene el titulo y despues imprimir los jugadores y luego poner los detalles recordando que detalles vas despues de jugadores.
Esto lo hice con crear variables dentro de while que imprime los datos de la tabla post, que contiene los datos de a una fecha y estas variables la puedo poner donde quiera... Después de jugadores y esto me funciono bien asi esa fue la única forma que encontré para cuadrarlo.
El único problema está en que en los jugadores quiero poner una coma para separarlo y esto si tabien me lo repite por while de jugadores a esto ahora le estoy buscando la vuelta.

Tengo pensado buscar algo que dentro de while me imprima y me reste un resultado probe con acount() pero no me resulto.

si alguien sabe pues todo oído. Tremenda situacion esta jejeej.

tal vez con un DO WHILE ?

Última edición por wilson_romero; 01/06/2016 a las 17:45

Etiquetas: fecha, mysql, select, sql, 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 23:35.