Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/06/2008, 04:23
reverendo_chila
 
Fecha de Ingreso: junio-2008
Mensajes: 23
Antigüedad: 15 años, 11 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.