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

como hacer relaciones entre tablas con sql??

Estas en el tema de como hacer relaciones entre tablas con sql?? en el foro de Mysql en Foros del Web. hola amigos buenas tardes, me encuentro trabajando en un sistema en php y phpmyadmin pero al momento de realizar las consultas me imprime lo que ...
  #1 (permalink)  
Antiguo 26/12/2010, 11:20
Avatar de darkmind  
Fecha de Ingreso: diciembre-2010
Ubicación: caracas
Mensajes: 9
Antigüedad: 13 años, 3 meses
Puntos: 0
como hacer relaciones entre tablas con sql??

hola amigos buenas tardes, me encuentro trabajando en un sistema en php y phpmyadmin pero al momento de realizar las consultas me imprime lo que guarda en una sola tabla de la base de datos porque no tengo claro las relaciones!
ejemplo:
consulto la cedula xxxxxx
y me sale su nombre su apellido etc etc pero en sexo me sale que es sexo 1 o sexo 2
ya que en la tabla referencial dice sexo 1 descripcion femenino ejemplo!
como puedo hacer para que cuando ejecute una consulta busque en la tabla referencial el sexo1 y me imprima su descripcion y no el codigo que se guarda en la tabla madre.

de antemano muchas gracias :)
  #2 (permalink)  
Antiguo 26/12/2010, 18:14
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: como hacer relaciones entre tablas con sql??

Perfecto, pero si no usas un JOIN entre ambas tablas, solamente te devolverá lo que dice la tabla que invocas.
Una FK que determine una relación, define una contraint sobre ese dominio, pero ningún DBMS crea JOINS en forma espontánea, debes definirlos tu mismo.

Trata de profundizar en el uso del SQL y fundamentalmente en la creación de consultas.

Tu caso:
Código MySQL:
Ver original
  1. SELECT P.nombre, P.apellido, S.descripcion sexo
  2. FROM persona P INNER JOIN sexo S ON P.sexo_id = S.sexo_id
  3. WHERE P.cedula = xxxxx;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 30/12/2010, 12:21
Avatar de darkmind  
Fecha de Ingreso: diciembre-2010
Ubicación: caracas
Mensajes: 9
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: como hacer relaciones entre tablas con sql??

hola buenas, gracias por tu respuesta estuve intentango algo asi, pero la verdad no se en que parte del php ponerlo!
luego decidi hacerlo con un "union" pero no se si php reconozca esto aki dejo el codigo a ver si pueden ayudarme
Código PHP:
<?php
//Conexión al servidor MySQL
$enlace mysql_connect('localhost','root','');
if (!
$enlace) {
            die (
'No se pudo realizar la conexión con el servidor MySQL: '.mysql_error());
            }
//Se selecciona la base de datos a utilizar
$mybd=mysql_select_db ('seguro',$enlace);
if (!
$mybd) {
            die (
'No se pudo seleccionar la base de datos: '.mysql_error());
            }
if (isset(
$_POST["texto"])) {
$cedula $_POST['texto'];
//hacemos la consulta y utilizamos la función mysql_query() para hacerlo:
$consulta mysql_query("select cedula, nombre, apellido, direccion, fecha_nac, lugar_nacimiento, estado_civil, telefono_hab, cod_genero, cod_tipo_persona from personas where cedula=$cedula union select descripcion from nacionalidad where cod_nacionalidad=$nacionalidad",$enlace);
//Por último se muetsran los datos y declaramos una variable, que en este caso se llamar $row, que guardará los datos en forma de arreglo, para luego llamar los reusltados.
if($row mysql_fetch_array($consulta)) {
print 
"<h1>Registro encontrado</h1>";
while(
$row=mysql_fetch_array($consulta));
$query="select * from personas where cedula=$cedula";
$bus=mysql_query($query,$enlace);
$cedula=mysql_result($bus,0,"cedula");
$nombre=mysql_result($bus,0,"nombre");
$apellido=mysql_result($bus,0,"apellido");
$direccion=mysql_result($bus,0,"direccion");
$fecha=mysql_result($bus,0,"fecha_nac");
$lugarnac=mysql_result($bus,0,"lugar_nacimiento");
$nacionalidad=mysql_result($bus,0,"nacionalidad");
$edocivil=mysql_result($bus,0,"estado_civil");
$telefono_hab=mysql_result($bus,0,"telefono_hab");
$genero=mysql_result($bus,0,"cod_genero");
$tipopersona=mysql_result($bus,0,"cod_tipo_persona");
?>
y este es el error que me manda!
Notice: Undefined variable: nacionalidad in C:\wamp\www\IPSIP\actualizarusuario2.php on line 15

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\IPSIP\actualizarusuario2.php on line 17


gracias por la ayuda! de antemano!

Etiquetas: relaciones, sql, 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 15:56.