가지고있는 문제의 예가 있습니다. 데이터베이스 테이블은 평소와 약간 다르지만이 방법으로 설정해야합니다.복잡한 MySql 업데이트 가입 쿼리
항목 : 아이디, ORDER_ID, 다른 분야
Items_Drinks : 아이디, 음료, 다른 분야
주문 : 아이디, 다른 분야
Orders_Drinks : 아이디, 음료, 다른 분야
Orders_Drinks id 필드와 동일한 order_id를 가진 Items_Drinks drinks 필드의 합계로 Orders_Drinks 테이블을 업데이트 할 업데이트 쿼리가 있어야합니다.
Items: 1 1 ...
Items: 2 1 ...
Items_Drinks: 1 4 ...
Items_Drinks: 2 5 ...
Orders: 1 ...
Orders_Drinks: 1 9 ...
Orders_Drinks 현재 정확하지만 내가 5 일의 ID로 Items_Drinks를 업데이트한다면, 나는 이드 1 Orders_Drinks을 얻기 위해 업데이트 명령을 필요 동일한 10
이 될 것이다 명령이 Orders_Drinks의 모든 레코드를 업데이트하는 것이 가장 좋습니다.
내 데이터베이스가 일반적인 것은 아니지만 제 신청서에 필요하다는 것을 알고 있습니다. Drinks 테이블이 모든 항목에 필요하지 않기 때문입니다. Drinks 테이블에는 5000 개가 넘는 필드가 있으므로 모든 레코드에 이러한 세부 정보가 있으면 데이터베이스가 커지고 실제 이유없이 느려집니다. 제발 데이터베이스를 재구성하라는 말을하지 마십시오. 이것이 필요합니다.
현재 C# 프로그램에서 루프를 사용하여 필요한 것을 수행하지만 명령이 1 개이면 많은 시간을 절약 할 수 있습니다!
여기에 최선의 시도가 있지만 "잘못된 그룹 기능"오류가 발생합니다.
update Orders_Drinks join Items on Items.order_id=Orders_Drinks.id join Items_Drinks on Items_Drinks.id=Items.id set Orders_Drinks.drinks=sum(Item_Drinks.drinks);
5000 개의 필드가있는 테이블? 스키마 전체가 다시 생각해야 할 필요가 있다고 생각합니다. 나는 당신이 당신의 질문에서 "이 방법이어야한다"고 말한 것을 알고 있습니다. 그러나 제 추측은 그것이 그렇게 할 필요는 없다는 것입니다. 아마도 관계형 저장소는 본질적으로 스키마가없는 무언가가 필요한 경우 실제로 필요한 것이 아닙니다. –