2016-06-16 9 views
0

Ich habe drei Tabellen, t1, t2 und t3.MySQL: IF t1.row1 = t1.row2 INSERT INTO t2

Tabelle 1 enthält "Auflistungen" und die Bilder, die den Auflistungen über die ID zugeordnet sind. Sie werden identifiziert sowohl durch type

id: 1 
postId: NULL 
type: listing 

id: 2 
postId: NULL 
type: listing 

id: 3 
postId: 1 
type: image 

id: 4 
postId: 1 
type: image 

id: 5 
postId: 2 
type: image 

Tisch an der Suche 2 enthält auch Angebot und Bild Assoziationen, die wie folgt aussieht:

id: 1 
listingId: 1 
type: imageasoc 
imgId: 3 

id: 2 
listingId: 1 
type: imageasoc 
imgId: 4 

id: 3 
listingId: 2 
type: imageasoc 
imgId: 5 

Wenn t1.id Matches t1.postId ich eine neue Zeile hinzufügen möchten, in t2, die t1.id und die id der t1.postId Reihe umfassen wird, sowie eine Zeichenfolge ‚imageasoc‘ (wie Sie im obigen Beispiel sehen werden)

Ich habe den Code unten, aber ich brauche es in eine INSERT INTO Aussage drehen, ich habe versucht, aber die Syntax/Formatierung ist immer falsch :(

UPDATE t2 
LEFT JOIN 
     t1 
ON  t1.id = t1.postId 
SET  t2.listingId = t1.id, t2.type = 'imageasoc', t2.imgId = id of t1.postID 
WHERE t1.type = 'image' 

Ich hoffe, ich habe mich genug erklärt, danke!

+0

Zuerst Sie Ihre Einträge und Bilder trennen sollte –

+0

Ich glaube nicht, ich verstehe Ihre Frage. Was sind die Beziehungen dieser Tabellen? Wo ist T3? Was versuchst du zu machen? – Tin

Antwort

1

Wenn ich richtig verstehe, können Sie dies mit einer INSERT ... SELECT-Anweisung:

INSERT INTO t2(listingId, type, imgId) 
SELECT t1.id, 'imageasoc', t1.postId 
FROM t1 
WHERE t1.id = t1.postId 
AND t1.type = 'image'; 
+0

Dank Andrew, obwohl das nicht erreicht, was in der Frage gefragt wird (mein schlechter, scheint, als ob ich Sachen für jeden verkomplizieren würde, einschließlich mich), verwende ich jetzt diese Behauptung, um zu erreichen, was ich in einer vereinfachten Weise will! Ist es noch akzeptabel, als Antwort zu markieren? –

+0

Ich würde sagen, es wäre eine sehr schöne Sache zu tun. –

Verwandte Themen