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

Relacionar Tablas con select from where

Estas en el tema de Relacionar Tablas con select from where en el foro de Mysql en Foros del Web. Buenas gente linda!, tengo un problema que para muchos de ustedes es muy simple pero para mi que soy novato no le he agarrado la ...
  #1 (permalink)  
Antiguo 21/05/2009, 12:30
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Relacionar Tablas con select from where

Buenas gente linda!, tengo un problema que para muchos de ustedes es muy simple pero para mi que soy novato no le he agarrado la mano.
Tengo dos tablas en una base de datos,

usuarios (id, nombre, pass, tipo, etc etc)

historial (nombre, forma de pago, concepto, importe, etc etc)

La cuestion es que estoy desarrollando una pagina donde listo el historial de cada cliente
por lo que cree una tabla y el while para desplegar los resultados en celdas pero no puedo relacionar o lo que sería seleccionar los datos de las tablas
El problema es que me aparecen todos los resultados, yo filtro con el campo nombre pero aunque tengan diferente nombre me muestran todos.
aqui les mando el sql y luego mi php y mi resultado...

MY SQL
Código:
-- Estructura de tabla para la tabla `historial`
--

CREATE TABLE IF NOT EXISTS `historial` (
  `nick` char(100) NOT NULL,
  `numero` varchar(100) NOT NULL,
  `fecha` date NOT NULL,
  `concepto` varchar(300) NOT NULL,
  `formadepago` varchar(100) NOT NULL,
  `importe` varchar(100) NOT NULL,
  `pagado` varchar(100) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


--
-- Estructura de tabla para la tabla `usuarios`
--

CREATE TABLE IF NOT EXISTS `usuarios` (
  `id` bigint(7) NOT NULL auto_increment,
  `nick` char(100) NOT NULL,
  `password` char(100) NOT NULL,
  `nombre` char(255) default NULL,
  `email` char(100) default NULL,
  `servicio` char(255) default NULL,
  `domicilio` text,
  `dni` char(255) default NULL,
  `contacto` char(255) default NULL,
  `url` char(255) default NULL,
  `desde` char(255) default NULL,
  `mensual` varchar(100) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;
aqui esta mi consulta php para que me arroje los datos
Código PHP:
<?php
    $result
=mysql_query("SELECT usuarios.*, historial.* FROM historial, usuarios WHERE usuarios.nick = historial.nick",$link);

    while(
$row mysql_fetch_array($result)) {
        
printf("<tr><td> %s</td><td> %s </td><td> %s</td><td> %s</td><td><img src=%s></td></tr>"$row["numero"],$row["fecha"],$row["concepto"],$row["importe"],$row["pagado"]);
    }
    
mysql_free_result($result);
    
mysql_close($link);
?>
El problema es que me muestra todos los historiales, no los de un usuario en especial o sea no me muestra los historiales donde se da la condición que ambos "nombre" de los campos se repitan en historial como en usuarios.
No se si es que tengo que poner claves primarias o alguna cosa en la base de datos o no este mi error en la base sino en el código php

Muchas gracias por su ayuda y piedad para mi que no entiendo!!!!
  #2 (permalink)  
Antiguo 21/05/2009, 12:45
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 14 años, 11 meses
Puntos: 5
Respuesta: Relacionar Tablas con select from where

hola

la sentencia sql que estas haciendo nada mas compara que te traiga todos los resultados donde coincidan los nombres, en ningun lugar le estas especificando que nombre..

pureba con esta sentencia:

select usuarios.*, historial.* FROM historial INNER JOIN usuarios WHERE usuarios.nick = "TU_VARIABLE";

espero sirva, posteas cualquier cosa...
  #3 (permalink)  
Antiguo 21/05/2009, 13:28
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Respuesta: Relacionar Tablas con select from where

Perfecto ahí me funciona barbaro, salvo por un problemita se me multiplican los historiales varias veces,, si no me equivoco de acuerdo a la cantidad de clientes que tengo, o sea por ej.
me muestra los historiales del cliente coco pero se me multiplica ese historial como 10 veces..
sabes que podra ser? sera que multiplica cada registro segun la celda donde estuvo buscando?

Asi esta mi código:


<?php
$result=mysql_query("select usuarios.*, historial.* FROM historial INNER JOIN usuarios WHERE historial.nick = '$nickUsuarioL';",$link);

while($row = mysql_fetch_array($result)) {
printf("<tr><td> %s</td><td> %s </td><td> %s</td><td> %s</td><td><img src=%s></td></tr>", $row["numero"],$row["fecha"],$row["concepto"],$row["importe"],$row["pagado"]);
}
mysql_free_result($result);
mysql_close($link);
?>
  #4 (permalink)  
Antiguo 21/05/2009, 13:54
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Relacionar Tablas con select from where

Prueba esto:

select usuarios.*, historial.* FROM historial INNER JOIN usuarios on usuarios.nick = historial.nick WHERE usuarios.nick = "TU_VARIABLE";

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 21/05/2009, 13:57
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Respuesta: Relacionar Tablas con select from where

ahi me funciona de maravillas huesos!

muchas gracias chicos! me salvaron la vida
  #6 (permalink)  
Antiguo 06/06/2009, 12:59
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Respuesta: Relacionar Tablas con select from where

quizas ahora me puedan ayudar a resolver esto
estoy armando un panel donde yo pueda modificar algunos registros de la base de datos
en el modificar.php esto es lo que pongo

<?php
include("conexion.php");
$id=$_POST['id'];
$numero=$_POST['numero'];
$fecha=$_POST['fecha'];
$concepto=$_POST['concepto'];
$importe=$_POST['importe'];
$formadepago=$_POST['formadepago'];
$pagado=$_POST['pagado'];

mysql_query("insert into historial (id,numero,fecha,formadepago,concepto,importe,paga do) where historial.id = $id",$link);

echo "Registro exitoso!";
?>

Para que me modifique el registro en el cual el id que traigo desde el formulario y el id del registro sean iguales


pero no me modifica nada, no se si no es asi ... por favor ayudaaaa :(
  #7 (permalink)  
Antiguo 06/06/2009, 13:12
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Relacionar Tablas con select from where

No te entiendo mucho tu pregunta...
pero por lo visto tienes una duda en php y no en base de datos.
Pregunta en el foro de php FORO PHP

si quieres modificar, deberias hacer uso de la sentencia update y no insert. si se trata de eso, aclara un poco mas la duda.

Un saludo nicomonjes
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 06/06/2009, 13:22
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Respuesta: Relacionar Tablas con select from where

axacto.. eso es lo que quiero hacer.. un update pero no logro actualizar los datos
me explico un poquito mejor

en formulario.php escribo y envio por medio de post las variables

entonces con este modificar.php lo que quiero hacer es que me modifique en la bd los datos de ese registro por ej... me equivoque en el importe. entonces en formulario ingrese todo de nuevo (siemple usando el mismo id del registro para que no me remplace otro) y aqui me lo actualizaría en la bd
entonces en este php que es de proceso ya obtube los datos del formulario, esta es la sentencia que debo usar?


<?php
include("conexion.php");
$id=$_POST['id'];
$numero=$_POST['numero'];
$fecha=$_POST['fecha'];
$concepto=$_POST['concepto'];
$importe=$_POST['importe'];
$formadepago=$_POST['formadepago'];
$pagado=$_POST['pagado'];

mysql_query("update into historial (id,numero,fecha,formadepago,concepto,importe,paga do) where id = $id",$link);

echo "modificacion exitosa!";
?>


espero que ahora me entiendas huesos y correjime en lo que te parezca
  #9 (permalink)  
Antiguo 06/06/2009, 13:35
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Relacionar Tablas con select from where

Cita:
mysql_query("update into historial (id,numero,fecha,formadepago,concepto,importe,paga do) where id = $id",$link);
cambialo por
Código mysql:
Ver original
  1. update historial set numero=$numero, fecha='$fecha',
  2. concepto='$concepto',importe='$importe',
  3. formadepago='$formadepago',pagado='$pagado'
  4. where id=$id;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #10 (permalink)  
Antiguo 06/06/2009, 13:39
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Respuesta: Relacionar Tablas con select from where

sos lo massss !!!!

Muchas gracias por la ayuda.. me anda de maravillas. sos un capo!
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 09:10.