2009-09-08 65 views
0

我有以下查詢:反向engneering查詢

SELECT a.catalogID, d.catalogFileID, e.catalogFileID 
FROM catalog_topics a 
LEFT JOIN catalog_files_join b ON a.catalogID = b.foreignKey 
LEFT JOIN catalog_files_join c ON c.foreignKey = b.catalogFileID 
LEFT JOIN catalog_files d ON d.catalogFileID = c.catalogFileID 
LEFT JOIN catalog_files e ON e.catalogFileID = b.catalogFileID 
WHERE b.fileTypeID = 'gvl401' 
AND c.fileTypeID = 'gvl25' 
AND a.topicID = 'top312' 
ORDER BY a.sortOrder; 

返回以下結果:

88 cfil923  cfil922 
89 cfil925  cfil924 
91 cfil929  cfil928 
171 cfil107  cfil1074 

我想寫一個INSERT語句來插入一些記錄這樣一種方式,如果我插入2記錄上面的select查詢返回6條記錄。插入時,我將有權訪問上面where子句中的所有內容,並且我將插入新的d.catalogFileID和e.catalogFileID。

回答

1

您提供的查詢從3個獨立的表中提取數據。一個SQL插入查詢將只將數據插入到一個表中。因此,爲了將每條記錄添加到系統中,每條記錄至少需要執行3次插入。即

對於10,cfil123一個新的記錄,cfil456你將需要:

INSERT INTO catalog_topics(catalogID, .. other required fields) VALUE(10, other required fields) 
INSERT INTO catalog_files(catalogFileID, .. other required fields) VALUE('cfil123', other required fields) 
INSERT INTO catalog_files_join(catalogFileID, .. other required fields) VALUE('cfil456', other required fields) 

此外,你應該換一組插入件的一個交易開始/結束對這樣或者所有%的刀片記錄發生或者沒有發生。