Foros del Web » Programando para Internet » PHP »

Union de tablas sql mediante sentencia en php

Estas en el tema de Union de tablas sql mediante sentencia en php en el foro de PHP en Foros del Web. Buenas a todos, Tengo una BBDD con dos tablas una que tiene pisos que se identifican por el campo Ref y en otra tabla tengo ...
  #1 (permalink)  
Antiguo 04/06/2008, 04:10
 
Fecha de Ingreso: septiembre-2007
Mensajes: 51
Antigüedad: 16 años, 6 meses
Puntos: 1
Union de tablas sql mediante sentencia en php

Buenas a todos,

Tengo una BBDD con dos tablas una que tiene pisos que se identifican por el campo Ref y en otra tabla tengo codigos de cliente y referencias de pisos.


La idea es poder listar los pisos que le pertenencen a un cliente.

se que es con un iner join pero no entiendo la sintaxis y no se como hacerloa para que me devuelva todos los pisos que pertenecen al codigo de ese cliente.

Un piso puede pertenecer a varios clientes.

Saludos y gracias
  #2 (permalink)  
Antiguo 04/06/2008, 04:23
 
Fecha de Ingreso: junio-2008
Mensajes: 23
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Union de tablas sql mediante sentencia en php

Éso es una relación M:N , muchos a muchos. Un cliente puede tener muchos pisos, un piso puede e tener muchos clientes.

Por lo tanto se genera una nueva tabla de la relación: pisos_cliente

pisos cliente contendra 2 claves primarias: cliente i piso. que sus claves foraneas apuntaran a cada una de las tablas pisos y cliente.

syntaxis para create table:

CREATE TABLE pisos(
id_piso smallint unsigned,
nombre_piso varchar(30),
CONSTRAINT PK_PISOS PRIMARY KEY (id_piso)
)type=Innodb;

CREATE TABLE clientes (
id_cliente smallint unsigned,
nombre_cliente varchar(30),
CONSTRAINT PK_CLIENTES PRIMARY KEY (id_cliente)
)type=Innodb;


--Tabla de la relación:
CREATE TABLE pisos_clientes (
piso smallint unsigned,
cliente smallint unsigned,
CONSTRAINT FK_pisos_clientes_piso foreign key (piso) references pisos (id_piso),
CONSTRAINT FK_pisos_clientes_cliente foreign key (cliente) references clientes (id_cliente),
CONSTRAINT pk_pisos_clientes PRIMARY KEY (piso,cliente)
)type=Innodb;


Luego piensa que tendras que llenar la tabla de enmedio para relacionar pisos y clientes. Ya que dijiste que un piso puede tener más de un cliente, y un cliente más de un piso. La llenaras con las id que quieras relacionar.

y la consulta seria esta:

--Muestra todo!
SELECT pisos.nombre_piso, clientes.nombre_cliente from pisos inner join pisos_clientes on (piso = id_piso) inner join clientes on (cliente = id_cliente);

--Muestra pisos de un cliente especifico:
SELECT pisos.nombre_piso, clientes.nombre_cliente from pisos inner join pisos_clientes on (piso = id_piso) inner join clientes on (cliente = id_cliente) WHERE nombre_cliente='nombredelcliente';

--Muestra clientes de un piso en concreto:
SELECT pisos.nombre_piso, clientes.nombre_cliente from pisos inner join pisos_clientes on (piso = id_piso) inner join clientes on (cliente = id_cliente) WHERE nombre_piso='nombredelpiso';


TAS ENTERAO LOCO?XD

por cierto esto és mysql.
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 06:08.