복붙노트

[SQL] 선택 (2008 SQL 서버)에서 두 테이블을 결합

SQL

선택 (2008 SQL 서버)에서 두 테이블을 결합

나는 예를 들어이 같은 두 개의 테이블이있는 경우 :

표 1 (제품)

id
name
price
agentid

표 2 (에이전트)

userid
name
email

어떻게 products.agentid = agent.userid 즉, 에이전트의 이름과 이메일을 포함 제품에서 결과 집합을받을 수 있나요?

어떻게 예를 들어 SELECT 가격 <100 가입합니까?

해결법

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

    1.가격 필터를 지원하기 위해 편집

    가격 필터를 지원하기 위해 편집

    당신은 그 테이블을 조인하기 위해 INNER JOIN 절을 사용할 수 있습니다. 그것은 이런 식으로 이루어집니다 :

    select p.id, p.name as ProductName, a.userid, a.name as AgentName
    from products p
    inner join agents a on a.userid = p.agentid
    where p.price < 100
    

    이 작업을 수행하는 또 다른 방법은 WHERE 절입니다 :

    select p.id, p.name as ProductName, a.userid, a.name as AgentName
    from products p, agents a
    where a.userid = p.agentid and p.price < 100
    

    참고 두 번째 경우에 당신은 두 테이블에서 모든 행의 천연 제품을 한 후 그 결과를 필터링하고 있습니다. 같은 단계에 참여하면서 첫 번째 경우 직접 결과를 필터링하고 있습니다. DBMS에은 (관계없이이 문제를 해결하기 위해 선택하는 방법) 가장 빠른 방법으로 그것을 처리하는 당신의 의도를 이해할 것이다.

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

    2.이것은 매우 초보적인 내부 조인입니다 :

    이것은 매우 초보적인 내부 조인입니다 :

    SELECT
      products.name AS productname,
      price,
      agent.name AS agentname
      email
    FROM 
      products
      INNER JOIN agent ON products.agentid = agent.userid
    

    나는 기본 구문과 개념을 가입 검토하는 것이 좋습니다. 당신이 위에있는 것은 표준 SQL로 매우 보편적이지만 여기에 마이크로 소프트의 문서에 대한 링크가 있습니다.

    내부가 여기에 가입 것을 참고 모든 제품은 NULL이 아닌 관련 agentid을 가지고 가정합니다. 제품에 NULL의 agentid가있는 경우, 사용 LEFT OUTER없이 에이전트와도 제품을 반환하는 대신 가입하세요.

  3. ==============================

    3.

    select p.name productname, p.price, a.name as agent_name, a.email
    from products p
    inner join agent a on (a.userid = p.agentid)
    
  4. ==============================

    4.이것은 도움이 Prod.Hope에 약간 큰 테이블 조인의 나입니다.

    이것은 도움이 Prod.Hope에 약간 큰 테이블 조인의 나입니다.

    SELECT TOP 1000 p.[id]
          ,p.[attributeId]
          ,p.[name] as PropertyName
          ,p.[description]
          ,p.[active],
          a.[appId],
          a.[activityId],
          a.[Name] as AttributeName 
      FROM [XYZ.Gamification.V2B13.Full].[dbo].[ADM_attributeProperty] p
      Inner join [XYZ.Gamification.V2B13.Full].[dbo].[ADM_activityAttribute] a
      on a.id=p.attributeId
      where a.appId=23098;
    
  5. ==============================

    5.

    select ProductName=p.[name]
    , ProductPrice=p.price
    , AgentName=a.[name]
    , AgentEmail=a.email
    from products p
    inner join agent a on a.userid=p.agentid
    
  6. from https://stackoverflow.com/questions/9304984/combine-two-tables-in-select-sql-server-2008 by cc-by-sa and MIT license