2013-09-24 65 views
3

好吧,我會盡力分享我的理解。所以我有兩個表如下: 表中的所有Id都是Autoincrement。將值插入到mysql_query中的新表中

Number 

id number 

10 100 
11 102 
12 105 
13 106 

subnumber 

id number_id subnumber 

52  10   10 
53  11   15 
54  13   40 

你看到一些數字(不是全部)有子數字。我的意思是: 從表number其中id = 13具有子編號的數字,它等於40. 我想將此表保存在另一個表中。

$sql1=mysql_query('SELECT number FROM number'); 


$while(fetch1=mysql_fetch_array($sql1)) 
{ 
    mysql_query(' 
    INSERT INTO `save_number` (number)' 
    VALUES ('.$fetch1['number'].'); 
    ); 
} 


save_number 

id  number 
100  100 
101  102 
102  105 
103  106 

現在我該怎麼保存表(子編號)在另一個表(save_subnumber)

$sql2=mysql_query('SELECT number_id, subnumber FROM subnumber'); 

$while(fetch2=mysql_fetch_array($sql2)) 
{ 
    mysql_query(' 
    INSERT INTO `save_subnumber` (number_id, subnumber)' 
    VALUES ('.$fetch2['number_id'].', '.$fetch2['number'].'); 
    ); 
} 

save_subnumber 

id number_id subnumber 
60  10   10 
61  11   15 
62  13   40 

所以,你看到NUMBER_ID FROM save_subnumber不等於新插入的ID從save_number。如果有人幫助我,我會受到冷落。順便說一句,我仍然使用mysql_query。我找不到時間來提高我的SQL以PDO :)

+1

但可以做到在MySQL的。 – RiKo

+0

你想在這裏完成什麼?如果您嘗試將save_number鏈接到數字,那麼您還需要在該表中具有number_id,或者您是否基於實際數字進行鏈接? save_subnumber實際上應該存儲什麼?來自save_number的id爲number_id? –

回答

3

第一個查詢可以更改爲

INSERT INTO 
    save_number (number) 
SELECT 
    number 
FROM 
    number 

這將節省您使用PHP遍歷行並將更快。很多。

考慮到這一點你的第二個查詢是

INSERT INTO 
    save_subnumber (number_id, subnumber) 
SELECT DISTINCT 
    sn.id, s.subnumber 
FROM 
    saved_number AS sn 
CROSS JOIN 
    number AS n 
USING (number) 
INNER JOIN 
    subnumber AS s 
ON 
    n.id = s.number_id 
+0

謝謝你的男人。它應該是工作。 – RiKo

+0

男人,在最後一行有一些錯誤。在sn(save_number)中沒有number_id – RiKo

+0

它被認爲是's.number_id' – Mchl

2

如果你只是想一個表複製到另一個你爲什麼不使用這樣的

INSERT INTO save_number SELECT * FROM number;