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

Relacionar dos registros de una misma tabla (tabla anidada)

Estas en el tema de Relacionar dos registros de una misma tabla (tabla anidada) en el foro de Mysql en Foros del Web. Tengo una tabla con 3 campos: CLIENTES cliente char(8) nombre char(30) amigo char(8) Donde el campo "amigo" corresponde a un registro de la misma tabla ...
  #1 (permalink)  
Antiguo 19/03/2010, 12:44
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Relacionar dos registros de una misma tabla (tabla anidada)

Tengo una tabla con 3 campos:

CLIENTES
cliente char(8)
nombre char(30)
amigo char(8)

Donde el campo "amigo" corresponde a un registro de la misma tabla y que será a su vez otro cliente.

Mi tabla estará poblada así:
101-Pedro-202
202-Luis-305
305-Paco-408
408-Pepe-978

Actualmente realizo mi consulta con esta instrucción la cual funciona perfectamente:
$consulta = mysql_query("SELECT clientes.cliente, clientes.nombre, clientes.telefono, clientes.amigo FROM clientes", $link);

Con lo cual se despliega:
101-Pedro-202
202-Luis-305
305-Paco-408
408-Pepe-978

Requiero buscar en la tabla el nombre del amigo para desplegarlo así:
101-Pedro-202-Luis
202-Luis-305-Paco
305-Paco-408-Pepe
408-Pepe-978-Juan

Lo anterior lo se hacer para el caso de 2 tablas diferentes con INNER JOIN, pero en este caso que se trata de una misma tabla ¿que debo hacer?

Imaginé hacerlo así:
$consulta = mysql_query("SELECT clientes.cliente, clientes.nombre, clientes.amigo FROM clientes INNER JOIN clientes on clientes.amigo=clientes.amigo", $link);

Pero no se dondecomo indicar el campo "nombre" que es el nombre del amigo.

Espero haberme explicado adecuadamente.

Gracias
  #2 (permalink)  
Antiguo 19/03/2010, 12:53
Avatar de lucasmoadr  
Fecha de Ingreso: marzo-2007
Ubicación: Llavallol, Buenos Aires
Mensajes: 220
Antigüedad: 17 años
Puntos: 5
Respuesta: Relacionar dos registros de una misma tabla (tabla anidada)

Cita:
Iniciado por Bier Ver Mensaje
Tengo una tabla con 3 campos:

CLIENTES
cliente char(8)
nombre char(30)
amigo char(8)

Donde el campo "amigo" corresponde a un registro de la misma tabla y que será a su vez otro cliente.

Mi tabla estará poblada así:
101-Pedro-202
202-Luis-305
305-Paco-408
408-Pepe-978

Actualmente realizo mi consulta con esta instrucción la cual funciona perfectamente:
$consulta = mysql_query("SELECT clientes.cliente, clientes.nombre, clientes.telefono, clientes.amigo FROM clientes", $link);

Con lo cual se despliega:
101-Pedro-202
202-Luis-305
305-Paco-408
408-Pepe-978

Requiero buscar en la tabla el nombre del amigo para desplegarlo así:
101-Pedro-202-Luis
202-Luis-305-Paco
305-Paco-408-Pepe
408-Pepe-978-Juan

Lo anterior lo se hacer para el caso de 2 tablas diferentes con INNER JOIN, pero en este caso que se trata de una misma tabla ¿que debo hacer?

Imaginé hacerlo así:
$consulta = mysql_query("SELECT clientes.cliente, clientes.nombre, clientes.amigo FROM clientes INNER JOIN clientes on clientes.amigo=clientes.amigo", $link);

Pero no se dondecomo indicar el campo "nombre" que es el nombre del amigo.

Espero haberme explicado adecuadamente.

Gracias

proba esto:

$consulta = mysql_query("SELECT clientes1.cliente, clientes1.nombre, clientes1.telefono, clientes1.amigo, clientes2.nombre FROM clientes cliente1, clientes cliente2 where clientes1.amigo = clientes2.cliente", $link);
__________________
Alquileres en la costa
Se tu mismo
  #3 (permalink)  
Antiguo 19/03/2010, 14:16
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Respuesta: Relacionar dos registros de una misma tabla (tabla anidada)

Cita:
Iniciado por lucasmoadr Ver Mensaje
proba esto:

$consulta = mysql_query("SELECT clientes1.cliente, clientes1.nombre, clientes1.telefono, clientes1.amigo, clientes2.nombre FROM clientes cliente1, clientes cliente2 where clientes1.amigo = clientes2.cliente", $link);
Estimado lucasmoadr,

Funcionó perfecto, solo corregi los nombres de las tabla y lo dejé así. Gracias.

$consulta = mysql_query("SELECT clientes1.cliente, clientes1.nombre, clientes1.telefono, clientes1.amigo, clientes2.nombre FROM clientes clientes1, clientes clientes2 where clientes1.amigo = clientes2.cliente", $link);
  #4 (permalink)  
Antiguo 22/03/2010, 06:39
Avatar de lucasmoadr  
Fecha de Ingreso: marzo-2007
Ubicación: Llavallol, Buenos Aires
Mensajes: 220
Antigüedad: 17 años
Puntos: 5
Respuesta: Relacionar dos registros de una misma tabla (tabla anidada)

Me alegro que te haya funcionado correctamente.
Saludos!!
__________________
Alquileres en la costa
Se tu mismo
  #5 (permalink)  
Antiguo 07/05/2010, 14:57
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Respuesta: Relacionar dos registros de una misma tabla (tabla anidada)

Cita:
Iniciado por lucasmoadr Ver Mensaje
Me alegro que te haya funcionado correctamente.
Saludos!!
Tengo una tabla con datos de amigos, así:

AMIGOS
id char(8)
nombre char(50)
amigo char(8)

Donde el amigo corresponde a una fila dentro de la misma tabla.

Tengo la instrucción para mostrar a los amigos de un usuario.

Código MySQL:
Ver original
  1. $consulta = mysql_query("SELECT
  2. amigos1.id, amigos1.nombre, amigos1.amigo, amigos2.nombre
  3. FROM
  4. amigos amigos1, amigos amigos2 where amigos1.amigo = amigos2.id",
  5. $link);

Ahora deseo mostrar a los amigos de los amigos
¿cual sería la instrucción?

Mi tabla estaría así:

1, pepe, 4
2, luis, 3
3, hugo, 6
4, paco, 5
5, coco, 0
6, lupe, 0

Gracias

Última edición por Bier; 07/05/2010 a las 15:03
  #6 (permalink)  
Antiguo 07/05/2010, 19:03
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 2 meses
Puntos: 21
Respuesta: Relacionar dos registros de una misma tabla (tabla anidada)

Resuelto, solo agregué una nueva emulación de archivo.
Gracias
  #7 (permalink)  
Antiguo 28/03/2012, 21:15
Avatar de Yoss15  
Fecha de Ingreso: octubre-2007
Mensajes: 11
Antigüedad: 16 años, 5 meses
Puntos: 0
Pregunta Respuesta: Relacionar dos registros de una misma tabla (tabla anidada)

Cita:
Iniciado por lucasmoadr Ver Mensaje
proba esto:

$consulta = mysql_query("SELECT clientes1.cliente, clientes1.nombre, clientes1.telefono, clientes1.amigo, clientes2.nombre FROM clientes cliente1, clientes cliente2 where clientes1.amigo = clientes2.cliente", $link);
Hola Lucas buenas noches. Estuve revisando el foro una respuesta con la cual ayudaste a alguien. queria saber que posibilidades hay de que puedas ayudarme con una duda que tengo al generar una vista en mi base de datos.

El ejemplo es el siguiente :

tengo una tabla donde se guarda:

id
descripcion
componente
cantidad

resulta que existen siempre 2 registros con la misma descripcion (aunque el id sea diferente), es decir, que tengo algo asi en mi BD:

01 tocineta carne1 45
02 tocineta carne2 60
03 jamon carne1 89
04 jamon carne2 50

entonces yo necesito relacionar todos los registros de esa tabla en donde la descripcion sea la misma (ya que es el unico campo que las relaciona)

y de esa manera poder realizar calculos entre los valores de cantidad de los registros relacionados. por lo que se me habia ocurrido crear una vista en donde mi tabla pueda quedar de la siguiente manera:

id,descripcion,componente1, cantidad, cantidad2(nuevo valor)
01 tocineta carne1 45 60
03 jamon carne1 89 50

existe alguna manera de lograr esto?

de antemano muchisimas gracias por el apoyo que puedas prestarme :)

Etiquetas: dos, registros, relacionar, 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 09:58.