문제

제목이 설명만큼 설명하지 않으면 미안하지만 한 문장으로 내가하려는 내용을 설명하기가 어렵습니다.).

부모 객체를 각 자녀와 연결하는 테이블 하나가 있습니다. 그리고 나는 모든 물체 (부모와 자녀)가 각각의 이미지가있는 다른 테이블을 가지고 있습니다. 그러나 이미지는 부모 객체를 위해 설정됩니다. 이 마지막 테이블을 업데이트하고 Childs 이미지를 부모에게 이미 설정 한 동일한 이미지로 설정하고 싶습니다. 게다가 각 객체에 대해 둘 이상의 이미지가 있기 때문에 특히 속성 열을 기반으로 알 수있는 이미지를 설정하고 싶습니다.

내 테이블은 다음과 같습니다.

관계 가능한

어린이 ID

부모 -ID

imagetable

객체 -ID

속성 -ID

이미지 url

그리고 여기에 사물을 명확히하기 위해 예를 들어 있습니다.

relationstable

child-id | 부모 -ID

3 | 1

4 | 1

5 | 2

imagetable

객체 -ID | 속성 -ID | 이미지 url

1 | goodimage | image1.jpg

1 | Badimage | image1b.jpg

2 | goodimage | image2.jpg

2 | Badimage | image2b.jpg

3 | goodimage | 아니요

3 | Badimage | 아니요

4 | goodimage | 아니요

4 | Badimage | 아니요

5 | goodimage | 아니요

5 | Badimage | 아니요

따라서 객체 3, 4 및 5 (자식)의 이미지를 각 부모 이미지로 설정하지만 '올바른'이미지로 설정하고 싶습니다. 즉 'goodimage'가 attribute-id 인 이미지입니다.

결국 그것은 다음과 같아야합니다.

1 | goodimage | image1.jpg

1 | Badimage | image1b.jpg

2 | goodimage | image2.jpg

2 | Badimage | image2b.jpg

3 | goodimage | image1.jpg

3 | Badimage | 아니요

4 | goodimage | image1.jpg

4 | Badimage | 아니요

5 | goodimage | image2.jpg

5 | Badimage | 아니요

사실, 나는 'badimage'가 설정되어 있는지 상관하지 않지만 중요한 것은 'goodimage'입니다.

나는 다음과 같은 것을 시도하고 있습니다.

UPDATE ImageTable

SET image = (SELECT image-url FROM ImageTable WHERE ImageTable.object-id = RelationTable.parent-id AND ImageTable.attribute-id = 'goodimage')

WHERE ImageTable.object-id = RelationTable.child-id AND ImageTable.attribute-id = 'goodimage'

그러나 올바른 SQL 구문이 아니기 때문에 작동하지 않습니다. 변수를 사용해야하는지 (사용한 적이 없음) 하나의 SQL 문장으로 만 수행 할 수 있는지 모르겠습니다.

어떤 도움이든 큰 감사를드립니다.

도움이 되었습니까?

해결책

이 같은?

메모:

이것은 하나의 비가 부적절한 진술로 병합 될 수 있지만 나는 게으르다.

나는 테스트하지 않았고 오타를 기대했다

;WITH goodlist AS
(
  SELECT child-id, image-url
  FROM relationstable
  left join imagetable on relationstable.child-id = relationstable.child-id and attribute-id = "goodimage"
)
UPATE imagetable
 set imagetable.image-url = 
   (SELECT top 1 image-url from goodlist where child-id = imagetable.object-id) 
WHERE imagetable.image-url = "no"

다른 팁

우선, 부모와 자녀의 관계가 1 : n이라면 그 정보를 같은 테이블에 추가하지 않겠습니까? 예를 들어 FieldName "ParentId"(비어있는 경우/null이면 부모 일뿐입니다). 혜택 : 추가 테이블이 필요하지 않으며 필요한 경우 계층 구조를 쉽게 만들 수 있습니다.

그리고 이미지의 경우 코드 어딘가에 이것을 표시하고 싶다고 생각하지만, 부모의 이미지를 얻기 위해 선택을 수정하는 것이 더 쉬워야합니다. 혜택 : 새 항목을 얻을 때 테이블을 업데이트 할 필요가 없으며 일부 어린이 항목이 자신의 이미지를 가질 수도 있습니다 (필요한 경우).

편집 : 오픈 소스 프로젝트 부분에 대한 새로운 의견을 발견했습니다. 물론 데이터베이스 설계를 변경하기가 어렵습니다. 그러나 아마도 일부 문제를 프로그래밍 측면으로 옮기는 것이 여전히 더 쉽습니다 (오픈 소스 소프트웨어에 의해 처리되지 않는 한).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top