Реляционные таблицы: 3-я таблица с отношениями - PullRequest
0 голосов
/ 14 декабря 2010

Я создаю страницу php, которая будет показывать определенный баннер, когда пользователь вводит свой номер телефона в поле формы.

Итак, вот моя логика для базы данных:

Настольные телефоны с полями: id, имя пользователя и номер телефона.Настольные баннеры с полями: id, название / заголовок баннера и баннер (путь к изображению).Таблица связи с полями: вот где номер телефона должен быть связан с баннером и где мне нужна ваша помощь:)

А вот моя логика для страницы php:

-форма получает телефончисло -Я запрашиваю базу данных -Я показываю баннер, связанный с номером телефона, введенным в форму.

Ниже приведен код для создания таблицы до сих пор ... как вы увидите, не знаете какпродвигаться.

Спасибо миллион

    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 голосов
/ 14 декабря 2010

Судя по вашему вопросу, с каждым номером телефона связан только один баннер. Поэтому удалите поле banners.id_banners и добавьте phones.id_banners

Затем, чтобы выбрать данные, вы можете присоединиться:

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'
0 голосов
/ 14 декабря 2010

Прежде всего, в чем вопрос? Что я могу упомянуть на этом этапе, является ли отношение между этими объектами один к одному? Если да, то лучше поместить все эти данные в одну таблицу.

++

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.'";
...