当给定 table 的 ID 时,如何根据单独的 table 的值向 WHERE 子句添加条件?
How can I add a condition to a WHERE clause depending on a separate table's value when given an ID for that table?
我正在尝试在 SQL 中创建一个存储过程。我想创建一个 SELECT 语句,其中根据来自单独 table 的布尔值将条件添加到 WHERE 子句。要在另一个 table 中使用的 ID 将是一个参数。
这是一个说明我正在尝试做的事情的例子。假设您有两个 table,一个叫 BusinessTrip,另一个叫 Salesperson。您想要计算有资格出差的销售人员的数量。但是,有些旅行要求销售人员会说法语。如果有问题的出差要求销售人员说法语,那么我想在 WHERE 子句中添加一个条件,只选择说法语的销售人员。这是我一直在尝试的:
@BusinessTrip_ID int
COUNT (salesperson_ID)
FROM salesperson
WHERE salesperson_isEligibleForTrip = TRUE
AND CASE WHEN (SELECT requiresFrench
FROM BusinessTrip
WHERE BusinessTrip_ID= @BusinessTrip_ID)
THEN salesperson_canSpeakFrench = TRUE
我的问题是我该怎么做才能完成我描述的内容?当给定 table 的 ID 作为参数时,如何根据单独的 table 的值向 WHERE 子句添加条件?
谢谢
简单如;
SELECT COUNT(s.id)
FROM salesperson s, businesstrip b
WHERE b.id = @BusinessTrip_ID
AND s.isEligibleForTrip
AND (s.canSpeakFrench OR NOT b.requiresFrench)
- 第一个条件找到行程
- 第二个查找符合旅行条件的所有销售人员
- 第三个条件是销售人员会说法语或商务旅行不需要法语。
我正在尝试在 SQL 中创建一个存储过程。我想创建一个 SELECT 语句,其中根据来自单独 table 的布尔值将条件添加到 WHERE 子句。要在另一个 table 中使用的 ID 将是一个参数。
这是一个说明我正在尝试做的事情的例子。假设您有两个 table,一个叫 BusinessTrip,另一个叫 Salesperson。您想要计算有资格出差的销售人员的数量。但是,有些旅行要求销售人员会说法语。如果有问题的出差要求销售人员说法语,那么我想在 WHERE 子句中添加一个条件,只选择说法语的销售人员。这是我一直在尝试的:
@BusinessTrip_ID int
COUNT (salesperson_ID)
FROM salesperson
WHERE salesperson_isEligibleForTrip = TRUE
AND CASE WHEN (SELECT requiresFrench
FROM BusinessTrip
WHERE BusinessTrip_ID= @BusinessTrip_ID)
THEN salesperson_canSpeakFrench = TRUE
我的问题是我该怎么做才能完成我描述的内容?当给定 table 的 ID 作为参数时,如何根据单独的 table 的值向 WHERE 子句添加条件?
谢谢
简单如;
SELECT COUNT(s.id)
FROM salesperson s, businesstrip b
WHERE b.id = @BusinessTrip_ID
AND s.isEligibleForTrip
AND (s.canSpeakFrench OR NOT b.requiresFrench)
- 第一个条件找到行程
- 第二个查找符合旅行条件的所有销售人员
- 第三个条件是销售人员会说法语或商务旅行不需要法语。