2012-01-16 3 views
0

나는 영업을위한 몇 가지 판매를 추적하기 위해 아주 간단한 사이트를 만들고 있습니다. 여기에는 각 항목에 대해 여러 테이블이있는 mysql 데이터베이스가 포함됩니다. 대부분의 경우 관계가 끊어지고 건조합니다. 그러나, 나는 같은 판매에 대한 여러 의견을 저장합니다 코멘트 테이블이 있습니다. 내가 주요 판매 테이블의 ID에 묶여 주석 테이블에 외래 키가 있습니다. 동일한 판매 ID에 대해 여러 총 금액을 저장한다는 점에서 총 테이블과 판매 테이블간에 유사한 배치가 있습니다. 이들을 데이터베이스에 삽입하는 가장 좋은 방법은 무엇입니까? 현재 댓글을 삽입하고 해당 행의 ID를 가져온 다음 총칭을 삽입하고 ID를 가져온 다음 댓글 ID와 총 ID를 사용하여 판매 테이블에 삽입합니다. 5 개의 쿼리를 작성하는 것보다 효율적인 방법이 있습니까?PHP MYSQL 데이터베이스 구조, 하나의 엔트리에 대한 다중 쿼리

- 수정 : 여기 현재 코드가 있습니다. 나는 이것에 대해 아주 새롭기 때문에 나는 당신이 의미 한 것을보기위한 절차를 찾아야 만했다. 그것은 기본적으로 내가하고있는 것처럼 보이지만, 그 대신에 가장 효율적인 방법을 찾으면 내가 할 수있는 방법을 만드는 것입니다.

//Prepare the Queries 
//Insert Gross Amounts Query 
$grossQ = "INSERT INTO gross (commGross, storeGross, manGross, fiGross, flatGross) VALUES ('$commGross', '$storeGross', '$manGross', '$fiGross')"; 

//Insert Comments Query 
$commentsQ = "INSERT INTO comments (comment, dealcomment, grosscomment) VALUES ('$otherComments', '$dealComments', $grossComments')"; 

//Insert Deal Query 
$q = "INSERT INTO sales (make, model, location, vehtype, saletype, manager, county, flat, unitcount, armoramount, controlnumber, salesman, stock) VALUES ('$make', '$model', '$location', '$vehType', '$saleType', '$managerName', '$county', '$flat', '$unitCount', '$armorAmount', '$controlNumber', '$salesmanName1', '$stock')"; 

//Make database connection 
$db = new db('palm_sales'); 

//Execute gross query and get the id of the row 
$db->execute($grossQ); 
$grossID = $db->getLastID(); 

//Execute comments query and get the id of the row 
$db->execute($commentsQ); 
$commentsID = $db->getLastID(); 

//Build Main Query 
$q = "INSERT INTO sales (make, model, location, vehtype, saletype, manager, gross, comments, county, flat, unitcount, armoramount, controlnumber, salesman, stock) VALUES ('$make', '$model', '$location', '$vehType', '$saleType', '$managerName', '$grossID', '$commentsID', '$county', '$flat', '$unitCount', '$armorAmount', '$controlNumber', '$salesmanName1', '$stock')"; 

//Execute Main Query 
$db->execute($q); 
if(mysql_affected_rows() > 0) 
{ 
    echo "Success!";  
} 
else echo "Error: ".mysql_error(); 
+1

저장 프로 시저를 작성할 수 있습니까? –

+0

코드를 게시 할 수 있습니까? 가장 효율적인 방법은 procudere와 트리거 사이에 삽입을 분할하는 것일 수 있습니다. –

+0

저장 프로 시저를 작성하거나 SQL 트랜잭션을 사용하여 모든 것이 정상인지 확인하십시오. –

답변

1

당신이 단지 순간에 3 개 쿼리를 수행하는 것처럼 그것은 소리 - mysql_insert_id()을 새 쿼리를 수행하지 않습니다, 그냥 수행 삽입에 대한 정보를 제공합니다.

댓글이나 총액을 삽입 할 때 왜 판매 테이블에 삽입해야하는지 명확하지 않습니다. 새 판매를 얻을 때

TABLE sales  PK id 
TABLE comments PK id FK sales_id 
TABLE gross  PK id FK sales_id 

, 당신은 sales 테이블에 삽입 : 나는 당신이 이런 일이있을 것이다 상상할 것입니다. 새 주석 또는 총액을 추가하려면 판매 ID의 외래 키와 함께 해당 테이블에 삽 입하십시오. 그 중 어떤 부분이 작동하지 않습니까?

+0

모든 정보는 하나의 형식으로 수집됩니다. 나는 네가하는 말을 보았다. 현재 판매 테이블에 FK comments_id 및 FK gross_id도 저장하고 있지만 필요하지 않습니다. 먼저 주 판매를 삽입 한 다음 댓글 및 전체에 대한 ID를 확인해야합니다. – Stewie

관련 문제