![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
04/06/2008, 04:23
|
| | Fecha de Ingreso: junio-2008
Mensajes: 23
Antigüedad: 16 años, 8 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. |