2014-04-11 2 views
0

저는 전문가가 아니지만 비즈니스 시스템이므로 변경하지 못합니다.세 테이블을 기반으로 한 열 업데이트

나는 세 개의 테이블을 가지고 있습니다 : t_posList, t_url, t_type. 테이블 t_posList에는 테이블 t_url에도 저장되는 URL이라는 열이 있습니다 (t_url의 ID는 t_posList에 저장되지 않으므로 posList.Url = t_url.Url과 같음).

모든 데이터 행의 t_posList.status 열은 t_type.url_id에 ID가 t_url 인 경우 '비 고객'으로 업데이트해야합니다 (상태 ID가되지만 간단하게 유지할 수 있음).

그래서 쿼리는 두 단계와 같습니다. 먼저 모든 데이터 행을 가져와야합니다. t_posList.Url = t_url.Url. 이 후 어떤 ID가 t_url 행의 찾을 수 있는지 확인해야 t_type.url_id 찾을 수 있습니다.

나는 당신이 내 뜻을 알기를 바랍니다. 우리 시스템은 전문가가 아니며 SQL 지식이 좋지 않기 때문에이 쿼리를 작성할 수 없습니다. 나는이 시도 :

편집이 약

UPDATE t_poslist SET status = ( 
    SELECT 'non-customer' 
    FROM t_url, t_type 
    WHERE url in 
      (select url from t_url 
      LEFT JOIN t_type ON t_url.ID = t_type.url_id 
      WHERE t_type.url_id is null) 
) 

답변

0

무엇을?

UPDATE p 
SET status = 'non-customer' 
FROM t_poslist p 
INNER JOIN t_url u ON u.url = p.url 
WHERE NOT EXISTS 
(
    SELECT * FROM t_type t WHERE t.url_id = u.ID 
) 
+0

나는 나를 위해 일하지 않았다. 그러나 나는 나의 Db에서 그것의 문제라고 생각한다. 나는 그것이 학교/회사 프로젝트를 일으키고 나는 16.04 => 내 우선 순위 목록 위에 놓을 때까지 그것을 끝내야 만하는 것처럼 그것을 떠날 것이다. –

관련 문제