복붙노트

[SQL] 또 다른 하나 개의 테이블 일치 조건에서 선택?

SQL

또 다른 하나 개의 테이블 일치 조건에서 선택?

정말 테이블에서 SQL 쿼리에 도움을 주시면 감사하겠습니다. 나는 이런 종류의 물건이 지속적으로 요구하고 있지만 나는 대답의 의미를 만들 수있는 유사한 정도로 질문을 찾을 수 없습니다 알고 있습니다.

나는 table_B에서 해당 태그가 table_A에서 행을 선택합니다. 따라서, 예를 들어, " '의자'태그 table_a에서 행을 선택"table_C을 반환합니다.

또한, ID는 table_a 독특한, 그리고 table_b에 있습니다.

table_A:             table_B:                  table_C:

id    object         id    tag                 id    object
1     lamp           1     furniture           3     stool
2     table          2     furniture           4     bench
3     stool          3     furniture
4     bench          4     furniture
                     4     chair
                     3     chair

또한, 데이터를 구성하는 더 좋은 방법이 있나요?

해결법

  1. ==============================

    1.가장 간단한 해결책이 될 것 상관 하위 선택 :

    가장 간단한 해결책이 될 것 상관 하위 선택 :

    select
        A.*
    from
        table_A A
    where
        A.id in (
            select B.id from table_B B where B.tag = 'chair'
    )
    

    또는 당신은 당신이 원하는 행을 테이블을 조인하고 필터링 할 수 있습니다 :

    select
        A.*
    from
        table_A A
    inner join table_B B
        on A.id = B.id
    where
        B.tag = 'chair'
    

    당신은 모두를 프로파일 링하고 빠르게 데이터 세트에있는 볼 수 있습니다.

  2. ==============================

    2.당신은 연결 테이블 태그를 자신의 테이블을 만들어야합니다.

    당신은 연결 테이블 태그를 자신의 테이블을 만들어야합니다.

    items:
    id    object
    1     lamp  
    2     table   
    3     stool  
    4     bench 
    
    tags:
    id     tag
    1      furniture
    2      chair
    
    items_tags:
    item_id tag_id
    1       1
    2       1
    3       1
    4       1
    3       2
    4       2
    
  3. ==============================

    3.

    select a.id, a.object
    from table_A a
    inner join table_B b on a.id=b.id
    where b.tag = 'chair';
    
  4. ==============================

    4.나는 (적어도 내가 비슷한 생각) 비슷한 문제가 있습니다. 다음 여기에 회신 한 용액이다 :

    나는 (적어도 내가 비슷한 생각) 비슷한 문제가 있습니다. 다음 여기에 회신 한 용액이다 :

    select
        A.*
    from
        table_A A
    inner join table_B B
        on A.id = B.id
    where
        B.tag = 'chair'
    

    내가 좋아하는 것 절이 될하는 곳 :

    WHERE B.tag = A.<col_name>
    

    또는, 내 특정의 경우 :

    WHERE B.val BETWEEN A.val1 AND A.val2
    

    좀 더 자세하게:

    표 A 장비의 함대의 상태 정보를 전달합니다. 각 상태의 기록은 그것으로 그 상태의 시작 및 정지 시간을 전달한다. 표 B가 정기적으로 기록 된 운반 나는 기간 동안 추출 할 장비에 대한 타임 스탬프 데이터는 테이블 A에 표시된

  5. from https://stackoverflow.com/questions/5446778/select-from-one-table-matching-criteria-in-another by cc-by-sa and MIT license