【发布时间】:2015-04-01 01:52:03
【问题描述】:
我有架构,其中为灵活的实现创建了表。假设我有 3 张桌子:
1. Customer
- CUSTOMER_ID
- NAME
2. Account
- ACCOUNT_ID
- ACCOUNT_TYPE
- IBAN
3. Dummy_table
- Dummy_table_id
- FK_CUSTOMER_ID
- FK_ACCOUNT_ID
- TABLE_NAME
我想在 JOIN 子句中实现模式逻辑。实现这一点的最佳方法是什么:
if (TABLE_NAME == "CUSTOMER") then {
JOIN WITH CUSTOMER TABLE USING FK_CUSTOMER_ID
} else {
JOIN WITH ACCOUNT TABLE USING FK_ACCOUNT_ID
}
【问题讨论】:
-
正确解释您的需求和业务规则。
-
拉利特,请检查伪代码。
-
这是不清楚的。这段代码到底要在哪里实现?你到底想做什么?为什么要动态引用数据库表?表名从哪里传递给您的 IF 构造?如果没有传递表名,或者传递了一些垃圾值,会发生什么?请正确解释您的要求。
-
写的是-我想要一个SQL查询,我想在JOIN子句中实现IF构造......所以这意味着表名是从Dummy_table列传递的......
-
如果我明白你在问什么,你就不能。 SQL 不能那样工作。您可以潜在地使用动态 SQL 来构造两个不同的查询之一,或者您可以静态地构造两个不同的查询并将
UNION ALL一起构造。但是,您对“灵活实现”的评论并希望动态确定要加入哪个表,这对我来说意味着您没有正确构建数据模型。如果是这种情况,我强烈建议在使您的代码非常复杂之前重新考虑模型。