Foros del Web » Programando para Internet » PHP »

[problema] mostrar datos con un inner join

Estas en el tema de [problema] mostrar datos con un inner join en el foro de PHP en Foros del Web. Hola a todos! bueno espero me puedan ayudar, mi problema es el siguiente, tengo dos bases de datos relacionadas entre si una que es la ...
  #1 (permalink)  
Antiguo 06/03/2014, 10:36
 
Fecha de Ingreso: febrero-2014
Mensajes: 22
Antigüedad: 10 años, 1 mes
Puntos: 0
[problema] mostrar datos con un inner join

Hola a todos! bueno espero me puedan ayudar, mi problema es el siguiente, tengo dos bases de datos relacionadas entre si una que es la tabla de empresas con el campo codigo y otra que se que relaciona que se llama sistemas y el campo que se relaciona es pertenece_a.

Anteriormente se da de alta con un formulario con checkbox en los cuales se da de alta el CLIENTE 01 y se marcan que tiene 3 SISTEMAS DE 5 que aparecen entonces en la tabla SISTEMAS por decir algo asi:

PERTENECE_A,SISTEMA
01 ADMINPAQ
01 CONTABILIDAD
01 FACTURACION

En el campo pertenece_a aparece el codigo del cliente de registro y utilizo a este codigo para mostrar el codigo del cliente y los sistemas que tiene

Código:
 <?php
  $link = @mysql_connect("localhost", "root","")
                or die ("Error al conectar a la base de datos.");
                @mysql_select_db("clientes", $link)
                or die ("Error al conectar a la base de datos.");

                $query = "SELECT * from empresas INNER JOIN sistemas ON empresas.codigo=sistemas.pertenece_a";
                $result = mysql_query($query);
                while($row = mysql_fetch_array($result))
    {
           
echo '<strong>CLIENTE: </strong>'.$row['codigo']."<br>";
echo '<strong>SISTEMA</strong>'.$row['sistema']."<br>";

    }     
        mysql_free_result($result);
    
?>

El cual si muestra los datos correctamente, pero se muestran de la siguiente manera


CLIENTE: 01
SISTEMA : ADMINPAQ

CLIENTE: 01
SISTEMA: CONTABILIDAD

CLIENTE: 01
SISTEMA: FACTURACION


Cuando lo que quiero es que aparezca de la siguiente manera

CLIENTE:01
SISTEMA: ADMINPAQ
CONTABILIDAD
FACTURACION


Osea todos en una misma consulta, no que aparezcan separados


Espero me puedan ayudar y gracias de antemano!
  #2 (permalink)  
Antiguo 06/03/2014, 11:53
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 2 meses
Puntos: 2
Respuesta: [problema] mostrar datos con un inner join

Código PHP:

 <?php
  $link 
= @mysql_connect("localhost""root","")
                or die (
"Error al conectar a la base de datos.");
                @
mysql_select_db("clientes"$link)
                or die (
"Error al conectar a la base de datos.");

                
$query "SELECT * from empresas INNER JOIN sistemas ON empresas.codigo=sistemas.pertenece_a";
                
$result mysql_query($query);
                while(
$row mysql_fetch_array($result))
    {
echo 
'<strong>CLIENTE: </strong> <br>';
echo 
'<strong>SISTEMA</strong><br>';


    do {        
$row['codigo']."<br>";
$row['sistema']."<br>";

    }     while (
$row_ mysql_fetch_assoc($row)); } 
        
mysql_free_result($result);
    
?>
Con algo así, debes poder lograrlo.
  #3 (permalink)  
Antiguo 06/03/2014, 12:14
 
Fecha de Ingreso: febrero-2014
Mensajes: 22
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: [problema] mostrar datos con un inner join

No amiga me tira el siguiente error:


Warning: mysql_fetch_assoc() expects parameter 1 to be resource, array given in C:\wamp\www\AIES\agenda.php on line 19
  #4 (permalink)  
Antiguo 06/03/2014, 12:18
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 2 meses
Puntos: 2
Respuesta: [problema] mostrar datos con un inner join

Cita:
Iniciado por Mike1996 Ver Mensaje
No amigo me tira el siguiente error:


Warning: mysql_fetch_assoc() expects parameter 1 to be resource, array given in C:\wamp\www\AIES\agenda.php on line 19
Primero, soy amiga, no amigo. xD Después, ¿Cuál es la línea 19?

Muéstrame tu código completo.
  #5 (permalink)  
Antiguo 06/03/2014, 12:21
 
Fecha de Ingreso: febrero-2014
Mensajes: 22
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: [problema] mostrar datos con un inner join

Cita:
Iniciado por Karen_mBrK Ver Mensaje
Primero, soy amiga, no amigo. xD Después, ¿Cuál es la línea 19?

Muéstrame tu código completo.
Jaja que pena, si me equivoque una disculpa! y la linea 19 es la del código que me proporcionaste estoy probando el codigo solo la linea 19 seria esta:

Código:
    }     while ($row_ = mysql_fetch_assoc($row)); }
  #6 (permalink)  
Antiguo 06/03/2014, 12:43
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 2 meses
Puntos: 2
Respuesta: [problema] mostrar datos con un inner join

Código PHP:
    }     while ($row mysql_fetch_assoc($row));  } 
  #7 (permalink)  
Antiguo 06/03/2014, 12:49
 
Fecha de Ingreso: febrero-2014
Mensajes: 22
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: [problema] mostrar datos con un inner join

Cita:
Iniciado por Karen_mBrK Ver Mensaje
Código PHP:
    }     while ($row mysql_fetch_assoc($row));  } 

No me sigue mandando este error:
Código:
Warning: mysql_fetch_array() expects parameter 1 to be resource, array given in C:\wamp\www\AIES\agenda.php on line 19

Y este es el código completo:
Código:
<?php
  $link = @mysql_connect("localhost", "root","")
                or die ("Error al conectar a la base de datos.");
                @mysql_select_db("clientes", $link)
                or die ("Error al conectar a la base de datos.");

                $query = "SELECT * from empresas INNER JOIN sistemas ON empresas.codigo=sistemas.pertenece_a";
                $result = mysql_query($query);
                while($row = mysql_fetch_array($result))
    {
echo '<strong>CLIENTE: </strong> <br>';
echo '<strong>SISTEMA</strong><br>';


    do {        
$row['codigo']."<br>";
$row['sistema']."<br>";

 }     while ($row = mysql_fetch_assoc($row)); } 
        mysql_free_result($result);
    
?>
  #8 (permalink)  
Antiguo 06/03/2014, 12:55
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 2 meses
Puntos: 2
Respuesta: [problema] mostrar datos con un inner join

Ok, prueba así, solo para ver que nos trae:

Código PHP:
<?php
  $link 
= @mysql_connect("localhost""root","")
                or die (
"Error al conectar a la base de datos.");
                @
mysql_select_db("clientes"$link)
                or die (
"Error al conectar a la base de datos.");

                
$query "SELECT * from empresas INNER JOIN sistemas ON empresas.codigo=sistemas.pertenece_a";
                
$result mysql_query($query);
                while(
$row mysql_fetch_array($result))
    {
echo 
'<strong>CLIENTE: </strong> <br>';
echo 
'<strong>SISTEMA</strong><br>';


    do {        
$row['codigo']."<br>";
$row['sistema']."<br>";

 }     while (
$row mysql_fetch_assoc($result)); } 
        
mysql_free_result($result);
    
?>
  #9 (permalink)  
Antiguo 06/03/2014, 13:01
 
Fecha de Ingreso: febrero-2014
Mensajes: 22
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: [problema] mostrar datos con un inner join

No recopila nada solo se muestran el texto en HTML
  #10 (permalink)  
Antiguo 06/03/2014, 13:03
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 2 meses
Puntos: 2
Respuesta: [problema] mostrar datos con un inner join

Cita:
Iniciado por Mike1996 Ver Mensaje
No recopila nada solo se muestran el texto en HTML
¿Cómo? ¿Qué texto muestra?
  #11 (permalink)  
Antiguo 06/03/2014, 13:05
 
Fecha de Ingreso: febrero-2014
Mensajes: 22
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: [problema] mostrar datos con un inner join

Cita:
Iniciado por Karen_mBrK Ver Mensaje
¿Cómo? ¿Qué texto muestra?
No muestra ningun dato de la bdd solo muestra los echo con el texto en la etiquetas strong
  #12 (permalink)  
Antiguo 06/03/2014, 13:10
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 2 meses
Puntos: 2
Respuesta: [problema] mostrar datos con un inner join

No sé exactamente como se llaman tus objetos, pero intenta con esto, y si ves que algo no coincide, simplemente modifícalo a tus necesidades
Código PHP:
<table border="1">
  <tr>
    <td>Cliente</td>
    <td>Sistema</td>

  <?php do { ?>
    <tr>
      <td><?php echo $row_result['codigo']; ?></td>
      <td><?php echo $row_result['sistema']; ?></td>
    </tr>
    <?php } while ($row_result mysql_fetch_assoc($result)); ?>
</table>
  #13 (permalink)  
Antiguo 06/03/2014, 13:20
 
Fecha de Ingreso: febrero-2014
Mensajes: 22
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: [problema] mostrar datos con un inner join

Gracias por la ayuda aunque me sigue tirando el error

Saludos!
  #14 (permalink)  
Antiguo 06/03/2014, 13:22
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 2 meses
Puntos: 2
Respuesta: [problema] mostrar datos con un inner join

Cita:
Iniciado por Mike1996 Ver Mensaje
Gracias por la ayuda aunque me sigue tirando el error

Saludos!
Ok, solo una pregunta ¿Estás escribiendo tu el código, o estás utilizando dw?
  #15 (permalink)  
Antiguo 06/03/2014, 13:26
 
Fecha de Ingreso: febrero-2014
Mensajes: 22
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: [problema] mostrar datos con un inner join

Cita:
Iniciado por Karen_mBrK Ver Mensaje
Ok, solo una pregunta ¿Estás escribiendo tu el código, o estás utilizando dw?

Lo estoy escribiendo ya pude mostrar el contenido con tu codigo pero es lo mismo me repite al codigo de usuario

Queria lograr que fuera asi

CODIGO : CLIENTE 01
SISTEMAS:
*ADMINPAQ
*CONTABILIDAD

Y lo que pasa es esto

CODIGO: CLIENTE 01
SISTEMAS:
*ADMINPAQ

CODIGO: CLIENTE 01
SISTEMAS:
*CONTABILIDAD
  #16 (permalink)  
Antiguo 06/03/2014, 13:43
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 2 meses
Puntos: 2
Respuesta: [problema] mostrar datos con un inner join

Tu problema no es de inner joins, es de como acomodas tus líneas

Código PHP:
<table border="1">
  <tr>
    <td>Cliente: <?php echo $row_result['codigo']; ?></td>
      <td>Sistema: </td>
  <?php do { ?>
    <tr>
   
      <td><?php echo $row_result['sistema']; ?></td>
    </tr>
    <?php } while ($row_result mysql_fetch_assoc($result)); ?>
</table>
  #17 (permalink)  
Antiguo 06/03/2014, 13:59
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: [problema] mostrar datos con un inner join

Mike1996 ¿Cómo se muestran los resultados de tu consulta en el administrador de Mysql?

Supongo que usas phpmyadmin. Veo bien la instrucción de Karen_mBrK, talves habría que ver como salen los resultados previos.

Saludos!!
  #18 (permalink)  
Antiguo 06/03/2014, 14:04
 
Fecha de Ingreso: febrero-2014
Mensajes: 22
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: [problema] mostrar datos con un inner join

Hola a los dos de nuevo, la consulta con el inner no esta mal, pero tampoco creo que este mal acomodado ya que de cualquier forma repite el codigo del cliente cuando me gustaria que solo me mostrara una vez el codigo y enseguida todos los demas sistemas que tiene, creo que el problema esta en el while


Middrel ¿A que te refieres?
Salu2


EDITO

Miren con este codigo

Cita:
<?php
$link = @mysql_connect("localhost", "root","aies$$")
or die ("Error al conectar a la base de datos.");
@mysql_select_db("clientes", $link)
or die ("Error al conectar a la base de datos.");

$query = "SELECT * from empresas INNER JOIN sistemas ON empresas.codigo=sistemas.pertenece_a";
$result = mysql_query($query);
while($row_result = mysql_fetch_array($result))
{

?>

<table border="1">
<tr>
<td>Cliente: <?php echo $row_result['codigo']; ?> </td>
<td>Sistema</td>
<?php do { ?>
<tr>
<td></td>
<td><?php echo $row_result['sistema']; ?><br></td>
</tr>
<?php } while ($row_result = mysql_fetch_assoc($result)); } ?>
</table>


Se muestra mis datos asi:





Y con este codigo modificando solo una linea

Cita:
<?php
$link = @mysql_connect("localhost", "root","aies$$")
or die ("Error al conectar a la base de datos.");
@mysql_select_db("clientes", $link)
or die ("Error al conectar a la base de datos.");

$query = "SELECT * from empresas INNER JOIN sistemas ON empresas.codigo=sistemas.pertenece_a";
$result = mysql_query($query);
while($row_result = mysql_fetch_array($result))
{

?>

<table border="1">
<tr>
<td>Cliente: </td>
<td>Sistema</td>
<?php do { ?>
<tr>
<td><?php echo $row_result['codigo']; ?></td>
<td><?php echo $row_result['sistema']; ?><br></td>
</tr>
<?php } while ($row_result = mysql_fetch_assoc($result)); } ?>
</table>



Queda asi





Y lo correcto seria que fuese asi:


Última edición por Mike1996; 06/03/2014 a las 14:26
  #19 (permalink)  
Antiguo 06/03/2014, 14:27
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 2 meses
Puntos: 2
Respuesta: [problema] mostrar datos con un inner join

Código PHP:
<table border="1">
  <tr>
    <td>Cliente: <?php echo $row_result['codigo']; ?></td> //Muestra la columna cliente, una vez.
      <td>Sistema: </td> //Muestra únicamente la palabra 'Sistema'
  <?php do { ?> //Iniciamos el ciclo, que nos ayudará a 'repetir' la columna sistema, para de tal forma, mostrar todos nuestros registros
    <tr>
   
      <td><?php echo $row_result['sistema']; ?></td> //llamamos nuestro juego de registros, que claramente, está en un ciclo
    </tr>
    <?php } while ($row_result mysql_fetch_assoc($result)); ?> //Cerramos el ciclo
</table>
  #20 (permalink)  
Antiguo 06/03/2014, 14:30
 
Fecha de Ingreso: febrero-2014
Mensajes: 22
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: [problema] mostrar datos con un inner join

Karen edite mi respuesta creo que no la viste, aqui te la pongo de nuevo


Cita:
Iniciado por Mike1996 Ver Mensaje
Hola a los dos de nuevo, la consulta con el inner no esta mal, pero tampoco creo que este mal acomodado ya que de cualquier forma repite el codigo del cliente cuando me gustaria que solo me mostrara una vez el codigo y enseguida todos los demas sistemas que tiene, creo que el problema esta en el while


Middrel ¿A que te refieres?
Salu2


EDITO

Miren con este codigo



Se muestra mis datos asi:





Y con este codigo modificando solo una linea




Queda asi





Y lo correcto seria que fuese asi:

  #21 (permalink)  
Antiguo 06/03/2014, 16:08
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: [problema] mostrar datos con un inner join

Me refería Mike1996 a como te sale la consulta cuando la haces en el administrador de Mysql. Lo que yo supongo es que te sale así:

Código MySQL:
Ver original
  1. SELECT * from empresas INNER JOIN sistemas ON empresas.codigo=sistemas.pertenece_a

Resultado:

Cita:
empresas - sistemas
CKL25 - AdminPAQ
CKL25 - PuntodeVenta
D - Nóminas
D - AdminPAQ
2 - Contabilidad
2 - Bancos
2 - PuntodeVenta
por citar un ejemplo.

y si haces la consulta así:

Código MySQL:
Ver original
  1. Select id_cliente, cliente, GROUP_CONCAT(sistema SEPARATOR '\n') From clientes as cli Left Join as sis On(sis.id_cliente = cli.id_cliente) Group By id_cliente

Te saldría como resultado esto:

Cita:
id_cliente cliente Group concat(sistema SEparator '\n')
1 - CKL25 - AdminPAQ
- PuntodeVenta
2 - D - Nóminas
- AdminPAQ
3 - 2 - Contabilidad
- Bancos
PuntodeVenta
Que creo que es el resultado que buscas.

Saludos!!

Perdón por el acomodo... no veo como poner todo como una tablita :/

P.D. Perdón por el
  #22 (permalink)  
Antiguo 06/03/2014, 16:20
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: [problema] mostrar datos con un inner join

Cambia el '\n' por '<br /> en la consulta que te envíe.

Al final sólo haces esto:

Código PHP:
<table>
    <tr>
        <td>Cliente</td>
        <td>Empresa</td>
    </tr>
    <?php while ($row_result mysql_fetch_assoc($result)){ ?> 
    <tr>
        <td><?php echo $row_result['codigo']; ?></td>
        <td><?php echo $row_result['sistema']; ?></td>
    </tr>
    <?php ?>
</table>
Te pedi que cambies '\n' por '<br />' porque en HTML el primero no lo acepta como salto de línea.

Saludos!!
  #23 (permalink)  
Antiguo 06/03/2014, 17:18
 
Fecha de Ingreso: febrero-2014
Mensajes: 22
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: [problema] mostrar datos con un inner join

Middrel ahora no lo podre probar sali de donde tengo todos los documentos mañana lo probare por la mañana espero y estes muchas gracias! mañana le seguire


Saludos!

Etiquetas: formulario, join, mysql, registro, select, 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 13:59.