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

Sql. Relacionar campos de dos tablas.

Estas en el tema de Sql. Relacionar campos de dos tablas. en el foro de Mysql en Foros del Web. Hola caballeros; siento entorpecer el foro con esta pregunta, pero en Google no logro dar con la solución. Antes que nada les explico mas o ...
  #1 (permalink)  
Antiguo 26/07/2011, 20:28
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 16 años, 5 meses
Puntos: 9
Busqueda Sql. Relacionar campos de dos tablas.

Hola caballeros; siento entorpecer el foro con esta pregunta, pero en Google no logro dar con la solución.

Antes que nada les explico mas o menos lo que tenemos, por ejemplo:
Código:
Create Table alfombras
(
id_alfombra INT(4) NOT NULL AUTO_INCREMENT,
nombre_alfombra VARCHAR(20),
KEY(id_alfombra)
) 

Create Table comprador
(
id_compradorINT(4) NOT NULL AUTO_INCREMENT,
nombre_comprador VARCHAR(20),
email (VARCHAR(20)
KEY(id_comprador)
)
Y bien, si quisiera hacer una consulta y seleccionar nombre_comprador y (de la otra tabla) nombre alfombra, dónde ambos tienen el mismo id.

Es decir; SELECT nombre_comprador, nombre_alfombra WHERE id_comprador = id_alfombra.
"Esto último es seguro descabellado, pero es para que entiendan lo que pretendo".

Con un ejemplo de lo que quiero lograr sería:
--------------------------------
1 - Alfombra árabe
2 - Alfombrine
--------------------------------
1 - Pedro
2 - Alfonso
--------------------------------
Alfombra árabe es de Pedro
Alfombrine es de Alfonso

Así a "palo simple" es eso, aunque el problema en principio es más engorroso, si me resuelven esa duda seguro que acabo con el problema.
Perdonen las molestias. Un saludo amigos!
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"

Última edición por winjose; 26/07/2011 a las 20:34
  #2 (permalink)  
Antiguo 26/07/2011, 21:29
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Sql. Relacionar campos de dos tablas.

Bueno, aqui solo veo SQL, nada de PHP y tu duda tambien es relacionada con base de datos, por lo que te sugiero pasar por la seccion de MySQL, donde seguramente te ayudaran.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 26/07/2011, 23:31
 
Fecha de Ingreso: julio-2008
Mensajes: 366
Antigüedad: 16 años, 4 meses
Puntos: 7
Respuesta: Sql. Relacionar campos de dos tablas.

Código MySQL:
Ver original
  1. SELECT * WHERE comprador INNER JOIN alfombras
  2. ON comprador.id_comprador=alfombras.id_comprador
  3. WHERE comprador.id_comprador = tu varinale php
  #4 (permalink)  
Antiguo 26/07/2011, 23:50
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Sql. Relacionar campos de dos tablas.

Cita:
Iniciado por moscrates Ver Mensaje
Código MySQL:
Ver original
  1. SELECT * WHERE comprador INNER JOIN alfombras
  2. ON comprador.id_comprador=alfombras.id_comprador
  3. WHERE comprador.id_comprador = tu varinale php
Bueno esto no va en este foro pero ya que ayudamos, aporto mi parte:

Tienes un error de sintaxis:

Código SQL:
Ver original
  1. SELECT * FROM comprador INNER JOIN alfombras
  2. ON comprador.id_comprador=alfombras.id_alfombra
  3. WHERE comprador.id_comprador = tu variable PHP
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 27/07/2011, 01:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Sql. Relacionar campos de dos tablas.

No estoy muy seguro, pero con "SELECT * FROM..." se carga la informacion de ambas tablas o solo la de comprador?

Yo creia que se requieria algo como:
Código SQL:
Ver original
  1. SELECT tabla1.*, tabla2.* FROM tabla1
  2. INNER JOIN tabla2 ON -- condicion --
  3. WHERE -- condicion --

Algunos de los que participamos en la seccion de PHP tenemos conocimientos de bases de datos, pero seguramente en la seccion de bases de datos podran aclarar mejor este tipo de cuestiones y, es precisamente por eso, que se recomienda que cada tema se trate en el lugar mas adecuado.

Por otra parte, me parece que con esas dos tablas no es suficiente para lo que quiere hacer nuestro amigo, porque creo que deberia haber otra tabla donde se tenga un listado para asociar cada comprador con la alfombra que ha comprado... digo, no creo que a cada alfombra se le asigne la ID del comprador, no me parece correcto.
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 27/07/2011, 01:26
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Sql. Relacionar campos de dos tablas.

Cita:
Iniciado por Triby Ver Mensaje
No estoy muy seguro, pero con "SELECT * FROM..." se carga la informacion de ambas tablas o solo la de comprador?

Yo creia que se requieria algo como:
Código SQL:
Ver original
  1. SELECT tabla1.*, tabla2.* FROM tabla1
  2. INNER JOIN tabla2 ON -- condicion --
  3. WHERE -- condicion --

Algunos de los que participamos en la seccion de PHP tenemos conocimientos de bases de datos, pero seguramente en la seccion de bases de datos podran aclarar mejor este tipo de cuestiones y, es precisamente por eso, que se recomienda que cada tema se trate en el lugar mas adecuado.
Se cargan las 2 con "SELECT * FROM..." con el INNER JOIN y da exactamente el mismo resultado.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 27/07/2011 a las 01:33
  #7 (permalink)  
Antiguo 27/07/2011, 01:35
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Sql. Relacionar campos de dos tablas.

Ya te han respondido... pero tengo una pregunta :)

Si viene pedro (comprador 1) y compra dos alfombras (1 y 2 !) ¿cómo lo sabrías? Y luego alfonso, compraria la alfombra... 3? o la 2 otra vez?

Tienes un pequeño fallo de normalización ;)

Deberías tener por un lado los clientes (compradores), por otro los tipos de alfombra (o productos) y una tercera tabla con las "transacciones" (ej: cliente 1 compra alfombra 2). Esta ultima tabla sería la q te faltaria ;)

Así, sería más sencillo controlarlo

No sé si me explico
  #8 (permalink)  
Antiguo 27/07/2011, 02:41
 
Fecha de Ingreso: julio-2008
Mensajes: 366
Antigüedad: 16 años, 4 meses
Puntos: 7
Respuesta: Sql. Relacionar campos de dos tablas.

eso es por que tus tablas no estan ligadas en comprador deveria de aver un id_alfombra, entonces los join funcionarian como quieres
  #9 (permalink)  
Antiguo 27/07/2011, 05:56
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 16 años, 5 meses
Puntos: 9
Respuesta: Sql. Relacionar campos de dos tablas.

Muchas gracias señores. Miraré el manual para ver como funciona inner join. Y buena pregunta Eleazan, si un comprador compraee 2 alfombras no funcionaría tal y como pensé el diseño de la base de datos. Pero por suerte era sólo un ejemplo. El script real en cuestión trataba de en vez de alfombras, equipos de futbol. Y en vez de compradores, jugadores.
Por lo que los jugadores sólo pueden pertenecer a un mismo equipo de futbol.

Así pues realizaría dos tablas, una para el nombre de los equipos y otra para los nombres de los jugadores que lo componen. Y para ver quienes pertenecen a uno u otro equipo.... todo lo que sigue ya se lo imaginan ustedes..!

Un saludo y muchas gracias. Ya postearé de nuevo como me fue!
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #10 (permalink)  
Antiguo 27/07/2011, 06:04
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Sql. Relacionar campos de dos tablas.

Cita:
Iniciado por winjose Ver Mensaje
Muchas gracias señores. Miraré el manual para ver como funciona inner join. Y buena pregunta Eleazan, si un comprador compraee 2 alfombras no funcionaría tal y como pensé el diseño de la base de datos. Pero por suerte era sólo un ejemplo. El script real en cuestión trataba de en vez de alfombras, equipos de futbol. Y en vez de compradores, jugadores.
Por lo que los jugadores sólo pueden pertenecer a un mismo equipo de futbol.

Así pues realizaría dos tablas, una para el nombre de los equipos y otra para los nombres de los jugadores que lo componen. Y para ver quienes pertenecen a uno u otro equipo.... todo lo que sigue ya se lo imaginan ustedes..!

Un saludo y muchas gracias. Ya postearé de nuevo como me fue!
Entonces, el id del jugador no es único? O en la tabla jugador tienes id_equipo ? :)
  #11 (permalink)  
Antiguo 27/07/2011, 06:05
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 9 meses
Puntos: 253
Respuesta: Sql. Relacionar campos de dos tablas.

Voy a repetirme otra vez, pero si consigo que alguien cambie su filosofía, aunque sea sólo uno, merecerá la pena.

Todo lo que puedas controlar a través de la base de datos, no lo controles a través de PHP, casi seguro que es más costoso. Si puedes, por base de datos, impedir que un mismo jugador se dé de alta en dos equipos, siempre será más fácil que hacerlo a través de PHP.

Con unos pilares fuertes, la casa aguanta más, y aquí los pilares es la base de datos y la casa el PHP.

Un saludo y suerte, ya nos contarás.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #12 (permalink)  
Antiguo 27/07/2011, 06:30
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 16 años, 5 meses
Puntos: 9
Respuesta: Sql. Relacionar campos de dos tablas.

Cita:
Iniciado por Eleazan Ver Mensaje
Entonces, el id del jugador no es único? O en la tabla jugador tienes id_equipo ? :)
El id_jugador sí. Mira te pongo un ejemplo para que lo veas mas claro:

id_equipo = 1 (AUTOINCREMENT Y no se puede repetir)
nombre_equipo = Villareal (Este valor tampoco ha de repetirse)
----------
id_jugadores = 1 (AUTOINCREMENT, Y no se puede repetir)
jugador_1 = Pedro
jugador_2 = Samuel
jugador_3 = Peter
-------------------------

Otro registro más:

id_equipo = 2
nombre_equipo = Granada
----------
id_jugadores = 2
jugador_1 = Erick
jugador_2 = Samuel
jugador_3 = Peter

Finalmente para mostrar los jugadores del granada tendría que ver que el id_jugadores = 2 y buscar el mismo id_equipo = 2 "en nuestro caso el Granada".

Espero que ahora lo vean claro, y espero que mi idea fuese sólida desde abajo, si no, no se de qué otra forma hacer la casa. Un saludo amigos, y muchas gracias.
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #13 (permalink)  
Antiguo 27/07/2011, 06:36
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Sql. Relacionar campos de dos tablas.

equipos
id | equipo

jugadores
id | id_equipo | nombre

En principio, lo haría así. Es más cómodo si alguna vez existe algun traspaso :)

Aunq todo depende de los requerimientos. Luego, otra cosa sería si tb quisieras tener un historial de traspasos, etc :)

Un saludo!

PD: Hay muchas maneras de hacer las cosas, no significa q esté mal una u otra
  #14 (permalink)  
Antiguo 27/07/2011, 06:40
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 9 meses
Puntos: 253
Respuesta: Sql. Relacionar campos de dos tablas.

Entonces tienes una tabla en que cada registro son todos los jugadores de un equipo?

Creo que eso no es exactamente un diseño correcto. La idea es que en una tabla guardes los equipos y en otra los jugadores, pero de uno en uno. Una cosa así:
Código:
CREATE TABLE Equipo (
    id_equipo integer autoincrement,
    nombre varchar(50),
    PRIMARY KEY (id_equipo)
)
CREATE TABLE Jugador (
    id_jugador integer autoincrement,
    nombre varchar(50),
    id_equipo integer
    PRIMARY KEY (id_jugador),
    FOREIGN KEY (id_equipo) REFERENCES Equipo (id_equipo)
)
Así, creas un equipo, por ejemplo, el Granada con id_equipo = 2. Para buscar los jugadores, sólo tienes que filtrar cuando id_equipo de la tabla jugador sea 2, pero cada jugador tiene un registro diferente, no todos en el mismo registro. No sé si me explico.

Un saludo.

PD: Se me adelantaron, pero así tienes info adicional
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Última edición por vgonga1986; 27/07/2011 a las 06:41 Razón: Maldito, te me adelantaste
  #15 (permalink)  
Antiguo 27/07/2011, 07:42
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 16 años, 5 meses
Puntos: 9
Respuesta: Sql. Relacionar campos de dos tablas.

Cita:

Así, creas un equipo, por ejemplo, el Granada con id_equipo = 2. Para buscar los jugadores, sólo tienes que filtrar cuando id_equipo de la tabla jugador sea 2, pero cada jugador tiene un registro diferente, no todos en el mismo registro. No sé si me explico.

Un saludo.

PD: Se me adelantaron, pero así tienes info adicional
Sí, te explicas perfectamente, aver quieres decir que por ejemplo podemos crear 5 jugadores (registros diferentes) y todos pertenecientes al mismo equipo (los 5 jugadores con id_equipo = 2) ¿cierto?

mmm.. interesante, pero ahora me has echo pensar que cómo puedes darle a todos los jugadores el mismo id_equipo.
Por ejemplo:
1 -Pedro - id_equipo = 2 (Granada)
2 -Samuel - id_equipo = 2 (Granada)
3 -Raul - id_equipo = 2 (Granada)

¿Cómo logramos que todos los jugadores obtengan el id_equipo = 2 ? No se si me explicaré...
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"

Última edición por winjose; 27/07/2011 a las 08:07
  #16 (permalink)  
Antiguo 27/07/2011, 08:39
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 9 meses
Puntos: 253
Respuesta: Sql. Relacionar campos de dos tablas.

Si te explicas. Y te explico yo también la solución. La idea es la siguiente:

Tienes un formulario donde rellenar los datos que quieras, esto lo puedes plantear tú como quieras: un form para el equipo y otro por cada jugador, un form conjunto donde des todo de alta... Eso no importa, lo importante es la secuencia de operaciones que tienes que hacer en PHP para insertarlo todo, que sería como sigue:
Código PHP:
INSERT INTO Equipo (nombredemas_datosVALUES ('Granada', ...) // Insertas el equipo con todos sus datos, entre ellos (esto es lo óptimo) uno que sea UNIQUE, por ejemplo, el nombre.
SELECT id_equipo FROM Equipo WHERE nombre 'Granada' // Utilizas ese campo UNIQUE para rescatar el id_equipo (que se le habrá asignado automáticamente.
$equipo $result['id_equipo']; // Desde PHP guardas en una variable el id que acabas de sacar.
for (/*Cada jugador*/) {
    
INSERT INTO Jugador (nombreotros_datosid_equipoVALUES ('Paco', ... , "$equipo")

Eso sería un pseudocódigo para lo que quieres hacer. Espero te sirva, la verdad, si empiezas a hacerlo bien desde el principio, aunque sea para scripts sencillitos, lo agradecerás, aunque ahora lo veas jaleo de más, luego simplifica mucho todo lo demás.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #17 (permalink)  
Antiguo 27/07/2011, 08:50
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Sql. Relacionar campos de dos tablas.

Yo dividiria, y tendría como "2 forms"

1.- Dar de alta / modificar / borrar equipos
2.- Dar de alta / modificar / borrar jugadores.

En el form de jugadores, habría un select que sería "Equipo: " y ahí pones el equipo que quisieras, por ejemplo, podría ser algo así (el select!)
Código PHP:
echo '<tr><td>Equipo: </td><td><select name="equipo>';
$sql_equipo "SELECT * FROM `equipos`";
$r mysql_query($sql_equipo);
while(
$arr mysql_fetch_array($r)) echo '<option value="'.$arr['id'].'">'.$arr['equipo'].'</option>';
echo 
'</select></td></tr>'
Eso sería un select de un formulario, con todos los equipos / id's de los equipos. Al obtener el valor por $_POST['equipo'], directamente te daria el ID del equipo al que pertenece el jugador, y así poder insertarlo en la BBDD

Por ejemplo :)

PD: Así es como lo haria yo xD
  #18 (permalink)  
Antiguo 27/07/2011, 09:03
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 9 meses
Puntos: 253
Respuesta: Sql. Relacionar campos de dos tablas.

Las opciones son varias, pero lo que está claro clarinete es el orden de las operaciones en la base de datos.

INSERT Equipo
SELECT Equipo
INSERT Jugador

Y si, es que tengo que quedar por encima de @Eleazan, jajaja... Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #19 (permalink)  
Antiguo 27/07/2011, 17:10
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 16 años, 5 meses
Puntos: 9
Respuesta: Sql. Relacionar campos de dos tablas.

jajajaja la realidad es que me convencen ambas formas así que karma para los dos. Bueno señores, simplemente queda, lo primero, darles las muchísimas gracias, y lo segundo (manual en mano) probar las ideas.

Eleazan, y Vgonga1986, de nuevo muchas gracias por el interés y por la ayuda y para los últimos que se incorporen y vean el post; "Asunto solucionado"
El problema, como ya anticipaba, Vgonga1986 era el diseño conceptual inicial de la base de datos.

Un saludos a todos!!!
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #20 (permalink)  
Antiguo 28/07/2011, 04:40
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 16 años, 5 meses
Puntos: 9
Respuesta: Sql. Relacionar campos de dos tablas.

Bueno chicos, siento la pesadez, pero me gustaría que alguien me dijera los errores de esta elaboración de código(echo con ayuda de Eleazar y Vgonga1986) :

Código PHP:
<?
$link 
mysql_connect("host","usuario","pass");
mysql_select_db("basedatos",$link);


    
$nombre_equipo $_POST['nombre_equipo'];
    
$nombre1 $_POST['nombre1'];
    
$apellido1 $_POST['apellido1'];
    
$nombre2 $_POST['nombre2'];
    
$apellido2 $_POST['apellido2'];

INSERT INTO Equipo (nombreid_equipoVALUES ('$nombre_equipo'),$link;

SELECT id_equipo FROM Equipo WHERE nombre '$nombre_equipo'
    
$equipo $result['id_equipo']; 

INSERT INTO Jugador (nombre1nombre2apellido1apellido2id_equipoVALUES (
'$nombre1''$apellido1''$nombre2' ,'$apellido2'"$equipo"),$link;

    
$my_error mysql_error($link);
    if(!empty(
$my_error)) {
            echo 
"Ha habido un error al insertar los valores. $my_error"
        } 
        else {
            echo 
"Los datos han sido introducidos satisfactoriamente";
        }
?>
Pd: Perdonen la ignorancia que encuentren en el código pero todo lo hago aprendiendo, con el manual en mano derecha y teclado en la izquierda.
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"

Última edición por winjose; 28/07/2011 a las 05:03
  #21 (permalink)  
Antiguo 28/07/2011, 05:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Sql. Relacionar campos de dos tablas.

Desde el principio, un error:
Código MySQL:
Ver original
  1. INSERT INTO Equipo (nombre, id_equipo) VALUES ('$nombre_equipo')
Estás indicando que enviarás dos valores (nombre, id_equipo), pero envías uno sólo ($nombre_equipo).

Lo que es PHP no es tema de este foro, y aquí las normas especifican que no se debe postear código de programación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #22 (permalink)  
Antiguo 28/07/2011, 08:51
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Sql. Relacionar campos de dos tablas.

Tienes unos cuantos errores:

Primero: las consultas SQL se ejecutan con mysql_query($consulta, $link)

Segundo: en la primera consulta, te falta especificar el valor de id_equipo (ya que le estás diciendo que se lo vas a pasar!)

Tercero: la segunda consulta, sobra. Puedes hacer un $equipo = mysql_insert_id()

Cuarto: la tercera consulta, mismo problema, debe ir en mysql_query


Te quedaría algo así
Código PHP:
$link mysql_connect("host","usuario","pass");
mysql_select_db("basedatos",$link);


    
$nombre_equipo $_POST['nombre_equipo'];
    
$nombre1 $_POST['nombre1'];
    
$apellido1 $_POST['apellido1'];
    
$nombre2 $_POST['nombre2'];
    
$apellido2 $_POST['apellido2'];

mysql_query("INSERT INTO Equipo (nombre, id_equipo) VALUES ('$nombre_equipo', default)",$link);

    
$equipo mysql_insert_id(); //Te devuelve el ultimo id insertado!

mysql_query("INSERT INTO Jugador (nombre1, nombre2, apellido1, apellido2, id_equipo) VALUES (
'$nombre1', '$apellido1', '$nombre2' ,'$apellido2', $equipo)"
,$link);

    
$my_error mysql_error($link);
    if(!empty(
$my_error)) {
            echo 
"Ha habido un error al insertar los valores. $my_error"
        } 
        else {
            echo 
"Los datos han sido introducidos satisfactoriamente";
        }
?> 
Aún así, te quedaría comprobar que la primera consulta tiene éxito antes de hacer la segunda ;)

PD: ¿Nombre2? ¿Apellido2? ¿Insertas 2 jugadores en el mismo registro? :S
  #23 (permalink)  
Antiguo 28/07/2011, 09:18
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 16 años, 5 meses
Puntos: 9
Respuesta: Sql. Relacionar campos de dos tablas.

Qué Crack eres Eleazan, muchas gracias compañero. Antes que copias tu correción voy a aprender todo lo primero que dijiste. Muchas gracias de nuevo.

Y en lo de nombre2, y apellido2 es porque un equipo tiene varios tipos de jugadores, por ejemplo jugador1 es un tipo de jugador como por ejemplo chicos, y jugador2 es para cuando el inscriptor es una chica. Aunque seguramente en el script original lo quite y diseño otro tipo de base de datos diferente. Muchas gracias por esta infor adicional, y gracias por avisar de igual manera.

Un saludo compi!
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #24 (permalink)  
Antiguo 28/07/2011, 09:21
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Sql. Relacionar campos de dos tablas.

Cita:
Iniciado por winjose Ver Mensaje
Qué Crack eres Eleazan, muchas gracias compañero. Antes que copias tu correción voy a aprender todo lo primero que dijiste. Muchas gracias de nuevo.

Y en lo de nombre2, y apellido2 es porque un equipo tiene varios tipos de jugadores, por ejemplo jugador1 es un tipo de jugador como por ejemplo chicos, y jugador2 es para cuando el inscriptor es una chica. Aunque seguramente en el script original lo quite y diseño otro tipo de base de datos diferente. Muchas gracias por esta infor adicional, y gracias por avisar de igual manera.

Un saludo compi!
jugador
id_jugador | nombre | apellido | sexo | equipo

Con eso lo tendrías solucionado, en vez de tener dos campos NULL. ¿No? :)
  #25 (permalink)  
Antiguo 28/07/2011, 09:29
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 16 años, 5 meses
Puntos: 9
Respuesta: Sql. Relacionar campos de dos tablas.

Sí es una solución al caso de que tuviera que diferenciar entre chicos y chicas. Buena idea!
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #26 (permalink)  
Antiguo 28/07/2011, 10:23
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 16 años, 5 meses
Puntos: 9
Respuesta: Sql. Relacionar campos de dos tablas.

Buenas de nuevo, no quise abrir un nuevo post porque el problema es que al llevar a la práctica todo lo hablado anteriormente en este tema, me salen unos problemitas.

1º En código al parecer no hay errores en consultas y demás porque sale que todo se hizo correctamente.
2º Los rquipos se guardan correctamente en la tabla equipos.

PERO:

Los en la tabla jugadores se guarda el primer registro correctamente, y todos los siguientes con id_equipo = 0.

Es decir por ejemplo, si inserto por el form, los siguientes datos:

Barcelona | Jose | Hernandez | Masculino
Real madrid | Xavi | Fernandez | Masculino
Atletico | Raul | Perez | Masculino
Real madrid | Alfonso | sanchez | Masculino

En la base de datos me sale en la tabla equipos

0 - Jose - Hernandez - Masculino
1 - Xavi - Fernandez - Masculino
2 - Raul - Perez - Masculino
0 - Alfonso - sanchez - masculino ¿ Alguien sabe a qué se debe que este último registro sea 0 y no 1 como habría de ser?
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"

Última edición por winjose; 28/07/2011 a las 10:50

Etiquetas: campos, php, relacionar, sql, 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 21:13.