2016-05-02 4 views
2

Ich habe diese Anfrage:Wie kann ich JOIN in der INSERT-Abfrage verwenden?

INSERT INTO table1 (col1) 
SELECT :val 
FROM table2 t2 
WHERE t2.id = :id limit 1; 

Diese Abfrage überprüft, ob t2.id = :id wahr ist, dann fügt. Jetzt möchte ich auch table3.id = :id überprüfen. Ich denke, ich muss JOIN in diesem Fall verwenden. Wie kann ich das machen?

I übergeben Sie Parameter wie folgt aus:

$stm->bindValue(":val", $value, PDO::PARAM_STR); 
$stm->bindValue(":id", $id, PDO::PARAM_INT); 

Hinweis: Ich weiß ich, dass durch eine FK tun können. aber das will ich nicht.

+0

Ihre ': val' wird immer denselben Wert-String sein, nicht * sicher Spaltenname * so ist es gleich wie SELECT "some_string" FROM table2 t2' – Justinas

+0

@Justinas Ich verstehe nicht .. Was meinst du genau? – stack

+0

Ich meine, dass PDO wird Ihren Spaltennamen als einfache Zeichenfolge und als Ergebnis erhalten Sie Spalte Name anstelle von Spalte Wert. – Justinas

Antwort

1

Versuchen Sie, diese

INSERT INTO table1 (col1) 
SELECT :val 
FROM table2 t2, table3 t3 
WHERE t2.id = :id and t3.id = :id limit 1; 
1
insert into table_name object 
INNER JOIN table_2 object2 ON object2.attribute = object2.attribute 
(object2.attribute1, object2.attribute2, object.attribute1, object.attribute2) 
values 
('somevalue', 'somevalue', 'somevalue', 'somevalue') 
Verwandte Themen