2016-06-15 34 views
0

Ich habe zwei Tabellen:Mysql Zwei Tabellen gemischt Daten

tabelle1:

ID| Name 
1 | firstname1 
2 | firstname2 
3 | firstname3 

table2:

ID| Name 
1 | lastname1 
2 | lastname2 
3 | lastname3 

und ich möchte Kombination Tabelle1 und Tabelle2 einfügen Beispiel Table3: table3:

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 

Ein Versuch in PHP (gU), ist aber sehr langsam ... i 10 000 000 Datensätze erstellen müssen (nach Kombination)

meine 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']]); 
    } 
} 

Soo, wie ich eine Abfrage, die Mischung schaffen Daten?

Thans

+1

Ich bin verwirrt. Geht es um das langsame Einfügen von Daten oder das Verbinden von zwei Tabellen? – GolezTrol

+0

Nur um Sie wissen zu lassen, ich hasse Spammer. –

+0

Verwenden Sie Links Join und Union mit Inner Join Abfrage, um Ihr gewünschtes Ergebnis zu erhalten –

Antwort

0

Verwendung unter SQL-Daten in table3 einfügen

INSERT INTO table3(fullname) SELECT concat(table1.name,'-',table2.name) FROM table1 CROSS JOIN table2; 
+0

Es wird nicht das gewünschte Ergebnis –

+0

Ich denke, Arkadiusz ist für eine kartesische Join, nicht eine innere Join suchen. –

+0

Tanner - du hast Recht. Dieser Code funktioniert nicht ... –

0

So etwas wie dies funktionieren kann, wenn man die dritten Tisch ID Autoinkrement gesetzt.

Aber ich bin nicht so vertraut mit mySQL Dialekt, so dass dies möglicherweise nicht

INSERT INTO table3 (fullname) 
VALUES( 
    SELECT table1.id, 
      concat(table1.name,'-',table2.name) 
    FROM table1 
    CROSS JOIN table2 
) 
-1

richtig, wenn Sie wollen nur die Daten aus verschiedenen Tabellen abrufen und in PHP verwenden Sie verwenden können Frage so. Sie sollten Ihren Spalten verschiedene Namen in jeder Tabelle geben, das ist immer eine hilfreiche Sache zu tun.

$query = "SELECT 
    table1.*, 
    table2.* 
    FROM 
    table1, table2 
    WHERE 
    table1.id=table2.id 
    "; 

$ row_query = mysql_fetch_assoc ($ query);