웹마스터 팁
[시니시즘] XE의 XML Query 관련 팁
2016.04.26 18:25
그냥 매번 깜박하다보니 저 스스로를 위해서 정리해두려고 팁 남겨봅니다. 정리될 때마다 팁은 계속 업데이트 하겠습니다.
XML Query문에서 DELETE시 JOIN 하는 방법
일반적으로 MySQL에서 DELETE시 JOIN을 하고 싶으면 아래와 같이 하는데요.
#> delete [T_name] from [table name] as [T_name] JOIN [table name] on [조건문] where [조건문];
└> 삭제할 테이블 이름.
이것은 XE의 XML Query문에서 사용하려면 아래처럼 하시면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | < query id = "deleteImageList" action = "delete" > < tables > < table name = "wedding_gallery_images" alias = "img" /> < table name = "files" alias = "fil" type = "left join" > < conditions > < condition operation = "equal" column = "img.file_srl" default = "fil.file_srl" filter = "number" notnull = "notnull" /> </ conditions > </ table > </ tables > < conditions > < condition operation = "equal" column = "fil.upload_target_srl" var = "document_srl" filter = "number" /> </ conditions > </ query > |
이렇게 해서 debugPrint 찍어보니 아래처럼 나오고 잘 지워집니다.
Object Object
(
[error] => 0
[message] => success
[variables] => Array
(
[_query] => DELETE `img` FROM `xe_wedding_gallery_images` as `img` left join `xe_files` as `fil` on `img`.`file_srl` = `fil`.`file_srl` WHERE `fil`.`upload_target_srl` = 26051
[_elapsed_time] => 0.00131
)
[httpStatusCode] =>
)
복수의 테이블에 동시에 INSERT를 하는 방법
예를 들어서 JOIN을 통해서 복수에 테이블에 값을 동시에 INSERT 하는 방법은 MySQL에서 지원하지 않습니다. MySQL에서 지원하지 않으면 당연히 XE XML Query문에서도 지원되지 않겠죠. 이럴 때는 XML Query문을 2개로 나눠서 INSERT 하시되 트랜잭션을 사용하셔야 합니다.
Ref: http://www.xeschool.com/xe/xe_xml_query (XESCHOOL - XML 쿼리 언어)