2013-04-02 54 views
0

我一直在查看這段代碼,以找出最後一小時的更好的部分,試圖找出我的失誤。這可能非常明顯,但是在電腦前這麼久以後,我可能只需要第二組眼睛就可以彈出。我有多個表連接,讓他們1NF和2NF,但有兩個讓我絆倒。自然加入MySQL中的兩個表格

我有一個名爲my_contacts的主表,還有一個名爲zip_code的狀態/城市信息。 zip_code保存主鍵行'zip_code',其中my_contacts保存其外鍵。

問題是,當我嘗試加入他們時,我什麼都沒得到。我在某個地方搞砸了嗎?下面是SHOW創建的每個表:

對於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

我是用一個非常簡單的自然連接: '選擇mc.first_name,mc.last_name,zc.state' 'FROM my_contacts mc' '自然連接ZIP_CODE ZC;' 兩個表中都有數據。我將附加上面的代碼,以包括每個列出的內容,如果這將有所幫助。 – Keith

+0

是郵編真實郵編嗎?您將它作爲'zip_code'表中的自動增量。 – Taryn

回答

1

zip_code中的zip_code表設置爲auto_increment。

這似乎不是該表中該字段的可能選擇。你在哪裏儲存zip_code?順便說一下,我希望實際的郵政編碼作爲字符串存儲,以處理前導0。一個郵政編碼可能看起來像一個數字,但它確實不是一個(排序不是很好定義,算術運算沒有意義)。