일부 코드를 재구성합니다. 이것은 PHP - MYSQL 프로젝트입니다. 그래서 하나의 쿼리 또는 적어도 두 개의 일부 테이블을 업데이트하려고합니다.사례 및 하위 쿼리를 사용하여 다중 테이블 업데이트 MySql
조인이 없어도 달성 할 수 있습니까? 최선의 선택은 무엇입니까?
UPDATE document D SET D.status = 2,
CASE
WHEN D.type 'A' THEN (UPDATE table_1 SET active = 1 WHERE id_table1 = D.id_document)
WHEN D.type 'B' THEN (UPDATE table_2 SET active = 1 WHERE id_table2 = D.id_document)
WHEN D.type 'C' THEN (UPDATE table_3 SET active = 1 WHERE id_table3 = D.id_document)
END
WHERE D.id_document = %s
나는 첫 번째 테이블의 "문서 D를"분리 괜찮다,하지만 그들은 11 개 테이블처럼 때문에 단일 쿼리에서 여러 테이블을 갱신하는 나는 "때 사건을"이 필요합니다.
이 오래된 코드는 "mysqli_query()"호출이 너무 많습니다. 단순한 반복적 인 업데이트의 경우처럼 32와 같습니다. 선의 양을 줄이고 싶었습니다. 또한 빠른 복사/붙여 넣기 테스트를 수행하는 간단한 SQL을 사용합니다. 배열에 테이블을 넣고 빌드하고 실행할 수 있습니다. 난 PHP와 SQL을 구축하지 않으려 고 노력 중입니다. –
죄송합니다, mysql에서 하나의 쿼리로 할 수있는 방법이 없습니다. 지금까지 가장 깨끗한 코드 솔루션은 변수에서 테이블 이름을 전달하는 것입니다. 빈약 한 데이터베이스 스키마 디자인을 수정하고 모든 테이블을 단일 테이블로 만들어 단일 간단한 업데이트로 작업을 수행하는 것이 더 나을 것입니다. 하지만이 코드는 오래된 코드라고 했으므로이 경우에는 비실용적 일 수 있습니다. –
"업데이트 선택"이 존재할 수 있습니까? 하위 쿼리가 더있는 뭔가? 하나의 쿼리 일 필요는 없습니다. 다른 테이블 "table1, table2"등은 실제로 다르며 병합 할 수 없습니다. 하나는 영수증, 다른 하나는 지불을위한 것, 다른 하나는 송장을위한 것입니다. 그 (것)들 사이에서만 1 개의 란 이름을 공유하십시오. –