2012-04-17 2 views
0

다른 테이블의 값을 조회하는 테이블을 선택하고 업데이트해야합니다. 내가복잡한 SQL 문을 구성하는 중

UPDATE order 
SET 
    total_price = @total_price, 
    order_detail = @order_detail, 
    product_id = (select is from stock where name = @product_name), 
    customer_id = (select id from customer where name = @customer_name), 
    vehicle_regno = (select reg_no from vehicle where name = @name) 
WHERE (id = @id) 
을 시도 업데이트에 대한

SELECT [Order].order_date, 
     [Order].total_price, 
     [Order].order_details, 
     vehicle.reg_no, 
     Staff.name, 
     stock.name 
FROM 
     Order, 
     vehicle, 
     staff, 
     stock 
WHERE 
     order.id = @order_id 
    AND vehicle.id = Order.vehicle_id 
    AND staff.id = Order.staff_id 
    AND stock.id = Order.product_id 

: 아이디어는 순서에서 몇 가지 세부 사항을 선택,하지만 난 노력 선택의 ID

를 사용하여 외부 키 값의 이름을 얻을 것입니다

둘 다 아무 것도 반환하지 않습니다. 도움이 될만 큼 명확하길 바래요.하지만 pls가 아니라면 더 많은 정보를 제공 할 것입니다. 당신은 Order.product_idstock.id 비교하는

+0

당신이 아무것도 업데이트되지 않는 것을 의미합니까 영향을 업데이트해야합니다 귀하의 업데이트 문 또는 update 문은 select 문과 같은 여러 결과를주지 않으므로 (업데이트 된 행 수만) 결과를 얻지 못합니다. –

답변

1

SELECT 문에 대한 INNER JOIN을 LEFT JOIN으로 변환 할 수 있습니다.

SELECT [Order].order_date, 
     [Order].total_price, 
     [Order].order_details, 
     vehicle.reg_no, 
     Staff.name, 
     stock.name 
FROM 
     [Order] 
     LEFT JOIN vehicle 
     ON vehicle.id = [Order].vehicle_id 
     LEFT JOIN staff 
     ON staff.id = [Order].staff_id 
     LEFT JOIN stock 
     ON stock.id = [Order].product_id 
WHERE 
     [order].id = @order_id 

이 중 하나)는 FK 필드에서 널 (null)을 허용하는 경우 차이가 만들 것 또는 b) 당신은 당신의 디자인에 문제를 가리킬 수 FK 제약 조건이없는 이유.

일부 행이 @id의 값이 ORDER 테이블에 존재 함을 제공하지만 @Danny Varod already commented로 다시 행을받지 않습니다 만 행의 수

+0

재고 표의 ID입니다.이 기능이 작동했습니다. 업데이 트를 도와 드릴까요, 내가 잘못 생각하고있는 것 같아요 – Smith

+0

무슨 뜻인지 잘못 설명해 주시겠습니까? 예 : 당신은'0 레코드가 갱신 됨'또는 null 값을 vehicle.id에 얻는다. –

1

, 그게 문제가 될 수를 돕는

덕분?
그렇지 않으면 테이블의 내용을 알아야 할 행이 반환되지 않는 이유는 아마도 inner join이 아닌 left join 일 것입니다.

+0

아니오 해당 문제가 product_id는 – Smith

관련 문제