2013-09-24 3 views
3

Хорошо, ребята, я постараюсь поделиться своим вниманием. Итак, у меня есть 2 таблицы, как показано ниже: ВСЕ ИД из ТАБЛИЦЫ - это автоинкремент.Вставка значений в новую таблицу в 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 

Теперь я собираюсь сохранить таблицу (subnumber) в другой таблице (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 не равна новой вставленной идентификатор из save_number. Я был бы рад, если бы кто-нибудь помог мне. Кстати, я все еще использую mysql_query. Я не могу найти время, чтобы улучшить мой SQL для PDO :)

+1

но можно сделать это в MySQL. – RiKo

+0

Что вы пытаетесь сделать здесь? Если вы пытаетесь связать save_number с номером, вам также нужно иметь number_id в этой таблице или вы связываетесь с фактическим числом? Что следует сохранить save_subnumber на самом деле? id из save_number как 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

Человек, на последней строке что-то не так. там нет number_id в sn (save_number) – RiKo

+0

Предполагается, что оно будет 's.number_id' – Mchl

2

Если вы просто хотите скопировать одну таблицу в другую, почему бы вам не использовать что-то вроде этого

INSERT INTO save_number SELECT * FROM number; 
Смежные вопросы