У меня есть две таблицы:
Таблица 1:
ID| Name
1 | firstname1
2 | firstname2
3 | firstname3
Таблица 2:
ID| Name
1 | lastname1
2 | lastname2
3 | lastname3
И я хочу вставить комбинацию table1 и table2 в table3 пример:
Таблица3:
ID| Fullname
1 | firstname1-lastname1
2 | firstname1-lastname2
3 | firstname1-lastname3
4 | firstname2-lastname1
5 | firstname2-lastname2
6 | firstname2-lastname3
7 | firstname3-lastname1
8 | firstname3-lastname2
9 | firstname3-lastname3
Попытка в php (pdo), но очень медленная … я должен создать 10 000 000 записей (после комбинации)
мой php:
<?php
//get firstnames, get lastnames before and...
foreach ($firstnames as $firstname) {
foreach ($lastnames as $lastname) {
$this->pdo->prepare("INSERT INTO `table3` (`fullname`) VALUES(?)")->execute([$firstname['name'] . '-' . $lastname['name']]);
}
}
Так, как я могу создать запрос, который смешивает данные?
Thans
Используйте ниже SQL для вставки данных в table3
INSERT INTO table3(fullname ) SELECT concat( table1.name,'-',table2.name ) FROM table1 CROSS JOIN table2;
Нечто подобное может сработать, если вы установите идентификатор третьей таблицы в автоинкремент.
Тем не менее, я не очень знаком с диалектом MySQL, так что это может или не может быть правильным
INSERT INTO table3 (fullname)
VALUES(
SELECT table1.id,
concat( table1.name,'-',table2.name)
FROM table1
CROSS JOIN table2
)
Если вы хотите просто получить данные из разных таблиц и использовать их в php, вы можете использовать такой запрос.
Вы должны давать своим столбцам разные имена в каждой таблице, это всегда полезно.
$query = "SELECT
table1.*,
table2.*
FROM
table1, table2
WHERE
table1.id=table2.id
";
$ row_query = mysql_fetch_assoc ($ query);