2016-06-16 6 views
0

У меня есть три таблицы, t1, t2 и t3.MySQL: ЕСЛИ t1.row1 = t1.row2 INSERT INTO t2

В таблице 1 представлены «списки» и изображения, связанные с листингами через идентификатор. Они оба определить, посмотрев на таблице 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 

2 также содержит перечень и изображения ассоциации, которая выглядит следующим образом:

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

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

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

Когда t1.id матчи t1.postId, я хочу, чтобы добавить новую строку в t2, который будет включать в себя t1.id и id из t1.postId строки, плюс строку «imageasoc» (как вы увидите в приведенном выше примере)

У меня есть код ниже, но мне нужно это превращается в INSERT INTO заявление, я пытался, но синтаксис/форматирование всегда неправильно :(

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' 

Я надеюсь, что я объяснил себе достаточно, спасибо!

+0

Сначала вы должны отделить свои списки и изображения –

+0

Я не думаю, что я понимаю ваш вопрос. Каковы отношения этих таблиц? Где t3? Что ты пытаешься сделать? – Tin

ответ

1

Если я правильно понимаю, вы можете сделать это с помощью INSERT ... SELECT заявление:

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

Спасибо, Андрей, хотя это не достигает того, что задают в вопросе (мой плохой, кажется, что я усложняю вещи для всех, включая меня). Теперь я использую это заявление для достижения того, чего хочу, упрощенным способом! Можно ли пометить как ответ? –

+0

Я бы сказал, что это будет очень хорошая вещь. –

Смежные вопросы