【问题标题】:Display column from a table based on a condition from another table根据另一个表中的条件显示表中的列
【发布时间】:2018-09-10 12:54:33
【问题描述】:

有 2 个表联系人和客户。

**Contact Table**                          
id(primary key)   
org_name                                   
city                                       
state                                     
email 

**Customer Table**   
id(primary key)                                 
created_under_id  
contact_id  
notes  
credit_limit

需要一个查询来显示所有信用额度超过25000的客户的org_name、city、state和email。根据他们的org_name升序显示记录。

我试过这个查询,但它不起作用:

SELECT org_name,city,state,email FROM contact  
    WHERE contact.id IN (SELECT customer.id FROM customer  
                  WHERE credit_limit >25000)ORDER BY org_name ASC;

【问题讨论】:

  • 你能详细说明“不工作”吗?你有错误吗?错误的结果?

标签: sql oracle subquery


【解决方案1】:

您可以在子查询中将customer.id 替换为customer.contact_id

或者,您也可以在这些表之间使用 JOIN 语句:

SELECT c.org_name, c.city, c.state, c.email
  FROM contact c
  LEFT OUTER JOIN customer r
    ON ( c.id = r.contact_id )
 WHERE r.credit_limit > 25000
 ORDER BY c.org_name ASC;

Contact.IDCustomer.contact_id 是用于构建表之间关系的常用列。

【讨论】:

    猜你喜欢
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多