문제

나는 기본 테이블 1과 2가 있습니다. TBL1과 TBL2라고 부릅니다.

tbl1
---------
1 - apple |
2 - orange |
3 - banana |
4 - pineapple

tbl2
---------
1 - table |
2 - chair |
3 - sofa |

그런 다음 위의 두 테이블에 연결하는 외부 키가있는 TBL3이 있습니다.

표 3 양식에는 두 개의 선택된 필드가 있습니다. 하나는 TBL1을 쿼리하고 다른 하나는 TBL2를 쿼리하는 것입니다. 여태까지는 그런대로 잘됐다. TBL3에서 TBL1 및 TBL2의 항목을 결합합니다.

그런 다음 다음과 같은 상황이 있습니다. 사용자가 TBL3을 충족 할 때 사용자가 TBL1에서 항목을 선택한 후 SELECT2 (TBL2의 데이터에 해당)를 다시로드하기를 원합니다. 무엇 때문에?

TBL3을 처음으로 충족 시켰다고 말합시다. 사용자는 TBL1에서 "Apple"과 TBL2에서 "Sofa"를 선택했다고 가정 해 봅시다. 사용자가 "Apple"을 선택했을 때, 두 번째 드롭 다운 목록은 옵션으로 3 개의 항목을 모두 다시로드했습니다.

이제 사용자가 TBL3 양식을 이행하는 경우, 사용자가 "Apple"을 다시 선택하면 이제 2 개의 옵션 만 있습니다. 사과와 소파는 전에 선택되었습니다. 이제 옵션은 "테이블"과 "의자"입니다. 그가 "Apple"과 "Table"을 선택하면 첫 번째 항목 "Apple"의 나머지 옵션은 "의자"가됩니다. 등등...

TBL2에서 요소를 가져 오는이 쿼리를 실행하는 SQL을 생각할 수 없습니다. 나는 tbl1에서 선택한 요소를 사용해야하고 어떻게 든 마하에 해당하지 않는 나머지 항목을 잡아야합니다. 이 SQL 쿼리가 가능합니까? 나는 그렇게 믿지만 탈출구를 생각할 수는 없습니다.

도움이 되었습니까?

해결책

표 3은 열이 있다고 생각합니다.

사용자, TBL1-ID, TBL2-ID

사용자 X의 경우 표 3에없는 TBL1로 만든 SELECON을 기반으로 TBL2의 값을 원한다고 생각합니다.

SELECT ID, Value
FROM tbl2
WHERE tbl2.ID NOT IN (
   SELECT Tbl2-ID
   FROM Table3
   WHERE (User = <this user>) AND (Tbl1-ID = <selected tbl1 ID>)
   )

다른 팁

링크가 사용자 기준으로있는 경우 :

SELECT t.id,
       t.value
  FROM TABLE2 t
  JOIN TABLE3 t3 ON t3.id != t.id

링크 인 경우 ~이다 사용자 기준에 따라 다음과 같습니다.

SQL Server :

SELECT t.id,
       t.value
  FROM TABLE2 t
  JOIN TABLE3 t3 ON t3.id != t.id AND t3.userid = @userId

신탁:

SELECT t.id,
       t.value
  FROM TABLE2 t
  JOIN TABLE3 t3 ON t3.id != t.id AND t3.userid = :userId
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top