2013-04-02 6 views
0

Я просматривал этот код в течение большей части последнего часа, пытаясь понять, что я ошибался. Вероятно, это очевидно, но после столь долгого времени перед компьютером мне может понадобиться второй набор глаз, чтобы он выскочил. У меня есть несколько таблиц, связанных, чтобы держать их 1NF и 2NF, но есть два отключения меня.Природный Присоединиться к двум таблицам в MySQL

У меня есть главный стол, называемый my_contacts, и один, содержащий информацию о состоянии/городе, называемую zip_code. zip_code содержит строку первичного ключа 'zip_code', в которой my_contacts содержит свой внешний ключ.

Проблема в том, когда я пытаюсь присоединиться к ним, я ничего не знаю. Я где-то виноват? Ниже приведены ШОУ Создание таблиц для каждого:

Для my_contacts:

CREATE TABLE `my_contacts` (
    `contact_id` int(11) NOT NULL AUTO_INCREMENT, 
    `last_name` varchar(100) DEFAULT NULL, 
    `first_name` varchar(100) DEFAULT NULL, 
    `phone` varchar(13) DEFAULT NULL, 
    `email` varchar(100) DEFAULT NULL, 
    `gender` char(1) DEFAULT NULL, 
    `birthday` date DEFAULT NULL, 
    `prof_id` int(11) DEFAULT NULL, 
    `zip_code` int(11) DEFAULT NULL, 
    PRIMARY KEY (`contact_id`), 
    KEY `mc_profid_fk` (`prof_id`), 
    KEY `my_zip_fk` (`zip_code`), 
    CONSTRAINT `mc_profid_fk` FOREIGN KEY (`prof_id`) 
    REFERENCES `profession` (`prof_id`), 
    CONSTRAINT `my_zip_fk` FOREIGN KEY (`zip_code`) REFERENCES `zip_code` (`zip_code`) 
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 

для zip_code:

CREATE TABLE `zip_code` (
    `zip_code` int(11) NOT NULL AUTO_INCREMENT, 
    `city` varchar(50) DEFAULT NULL, 
    `state` char(2) DEFAULT NULL, 
    PRIMARY KEY (`zip_code`) 
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 

спасибо заранее.

+0

Каков запрос, который вы используете для выбора? Вы уверены, что у вас есть данные в обеих таблицах? Можете ли вы разместить некоторые данные образца? – Taryn

+0

я использую довольно простой NATURAL JOIN: 'ВЫБРАТЬ mc.first_name, mc.last_name, zc.state' ' ИЗ my_contacts mc' 'NATURAL JOIN zip_code гс;' Обе таблицы имеют данные в них. Я добавлю приведенный выше код, чтобы включить то, что указано в каждом, если это поможет. – Keith

+0

Является ли почтовый индекс реальным почтовым индексом? У вас это как автоматическое приращение в таблице 'zip_code'. – Taryn

ответ

1

zip_code в таблице zip_code устанавливается в auto_increment.

Это не похоже на вероятный выбор для этого поля в этой таблице. Где вы на самом деле храните zip_code? Кстати, я бы ожидал, что фактический почтовый индекс будет сохранен в виде символьной строки для обработки начальных 0. Почтовый индекс может выглядеть как число, но он действительно не один (упорядочение не очень четко определено, а арифметические операции не имеют смысла).

Смежные вопросы