关系表:具有关系的第3个表

时间:2010-12-14 16:34:12

标签: php mysql foreign-key-relationship create-table relational

当我在用户在表单字段中输入他/她的电话号码时,我正在构建一个显示特定横幅的php页面。

所以这是我对数据库的逻辑:

带有字段的手机:id,用户名和电话号码。 带有字段的表格横幅:id,横幅的名称/标题和横幅(图像的路径)。 表格与字段的关系:这里是电话号码与横幅相关的位置以及我需要您帮助的位置:)

这是我对php页面的逻辑:

-form获取电话号码 -I查询数据库 - 我显示与表格中输入的电话号码相关的横幅。

下面是目前为止创建表格的代码..因为你会看到不知道如何推进。

万分感谢

    CREATE TABLE phones(

id_phone INT NOT NULL AUTO_INCREMENT,

nombre VARCHAR(30),

number INT (9),

PRIMARY KEY (id_phone)

) TYPE = INNODB;


CREATE TABLE banners (

id_banners INT NOT NULL AUTO_INCREMENT,

id_phone INT NOT NULL,

name VARCHAR(250),

banner VARCHAR(250),

PRIMARY KEY(id_phone),

INDEX (id_phone),

FOREIGN KEY (id_phone) REFERENCES clientes(id_phone)

) TYPE = INNODB;

2 个答案:

答案 0 :(得分:0)

首先是什么问题? 在这一步我能提到的是,这些实体之间的关系是一对一的吗?如果是这样,您最好将所有这些数据放在一个表中。

++

CREATE TABLE phones(
phone_id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30),
number INT (9),
PRIMARY KEY (id_phone)
) TYPE = INNODB;

CREATE TABLE banners (
banner_id INT NOT NULL AUTO_INCREMENT,
phone_id INT NOT NULL,
name VARCHAR(250),
banner VARCHAR(250),
PRIMARY KEY(id_phone),
INDEX (id_phone),
FOREIGN KEY (phone_id) REFERENCES clientes(phone_id)
) TYPE = INNODB;

,查询将是:

$query = "SELECT * FROM clients LEFT JOIN banners USING(phone_id) WHERE clients.number='.$number.'";

答案 1 :(得分:0)

根据您的问题,似乎每个电话号码只有一个与之关联的横幅。因此,请删除banners.id_banners字段并添加phones.id_banners

然后选择数据,你可以进行JOIN:

SELECT phones.id_phone, phones.nombre, phones.number, 
banners.id_banners, banners.name, banners.banner
JOIN banners ON phones.id_banners = banners.id_banners
WHERE phone = '123-456-789'