[PHP/MYSQL] Einfügen unter Bedingung

Renegade

Well-known member
ID: 159167
L
3 August 2006
851
77
Hi,

Ich stehe gerade vor einem Rätsel:

Ich habe 2 Tabellen:

Tabelle
a

Spalten
a_name
b_id

Tabelle
b

Spalten
b_id
b_wert

Jetzt will ich eine Aktion auführen die ungefähr so sein sollte (Pseudocode):
INSERT INTO a (a.a_name, a.b_id) VALUES ($name, $id) WHERE b.b_id = $id AND b.b_wert <= $wert

Soweit mir bekannt ist, funktioniert das nicht, da eine WHERE-Clausel nicht erlaubt in einer INSERT-Abfrage sind.

Gibt es da gute Alternativen? Ich könnte ja erst eine Select-Abfrage machen, dann eine IF-Abfrage und dann die INSERT-Abfrage. Ist aber denke ich mal viel zu kompliziert, oder?
 
Wie willst du einen nichtexistierenden Datensatz mit Bedingungen verknüpfen?

Du kannst höchstens mit INSERT INTO ... SELECT arbeiten, da sollte die Doku weiterhelfen.
 
Wie willst du einen nichtexistierenden Datensatz mit Bedingungen verknüpfen?

Genau das ist ja meine Frage. In der Tabelle b steht natürlich ein Datensatz (id und den wert) und ich möchte jetzt nur in a einfügen wenn in b.b_wert das Gleiche steht wie in der Variable "$wert" und b.b_id gleich "$id" ist.

Du kannst höchstens mit INSERT INTO ... SELECT arbeiten, da sollte die Doku weiterhelfen.

Sehe ich das richtig, dass wenn die SELECT Abfrage kein Treffer findet, die INSERT-Abfrage nicht ausgeführt wird?
 
Sehe ich das richtig, dass wenn die SELECT Abfrage kein Treffer findet, die INSERT-Abfrage nicht ausgeführt wird?

Ich würde es sicherheitshalber mal ausprobieren ;)

Code:
// https://dev.mysql.com/doc/refman/5.0/en/insert.html - 2. Post von unten
INSERT INTO TargetTable (col1, col2, col3)
SELECT col1,col2, 'ExplicitValue'
FROM SourceTable

Ansonsten vielleicht mit einem INSERT INTO ... SELECT ... INNER JOIN, auch wenn das wohl der totale Overhead wäre ...
 
Ich merke gerade, dass "INSERT ... SELECT" falsch ist, da man von der einen in die andere Tabelle schreibt.

Ich brauche ja nur ein Vergleich über die zweite Tabelle.