SQL查询基于另一个表中的给定限制

时间:2014-10-17 13:52:57

标签: sql sql-server-2008

父表:

Cate_Name | Warn_Qty
--------------------
CAT1      | 40
Test      | 10
Test1     |  5
Test1     | 10

交易表

CAT1    |   25
Test    |   5
Test2   |   50
Test1   |   50

我在这里寻找一个查询。

在父表中,Cate_NameWarn_Qty值将由用户定义 Cate_Name将是n .. no。以下是交易表

查询应仅输出Transaction table的数量少于或等于相应Parent table的{​​{1}}

的记录

此处的输出示例表格如

Warm_Qty

注意: - 在查询中, Parent Table CAT1 | 40 Test | 10 Transaction table CAT1 | 25 Test | 5 将是多个不仅仅修复类别

2 个答案:

答案 0 :(得分:1)

SELECT t.category_name, t.warn_qty 
 FROM 
    parent_table p, transaction_table t 
 WHERE 
    p.category_name = t.category_name   -- the join
    t.warn_qty <= p.warn_qty            -- the qualifier

除非我在这里遗漏了什么。它主要是说“从事务表中获取所有内容,其中warn_qty小于父表中匹配的warn_qty,并按类别名称加入。”

应该注意的是,对于SQL2008及更高版本,建议您完全写出你的JOIN,而不是像我上面那样做出快捷方式。我虽然老了,但仍然认为这对于简单的连接来说更具可读性。

答案 1 :(得分:1)

尝试使用多个条件的内部联接。

select trans.category, trans.qty
from transactiontable trans
inner join parenttable parent on 
trans.Category = parent.Category
and trans.qty <= parent.warn_Qty
相关问题