所以,我编写了一个相当复杂的查询,从两个表中获取并连接一组数据。在
SELECT
/* Common attributes */
carrier.name,
carrier.notes,
carrier.turnaround,
/* Either per-reseller price, generic reseller price or default price */
IFNULL(
rsu.price,
IF(
(
carrier.reseller_price != IS NOT NULL AND
carrier.reseller_price != 0
),
carrier.reseller_price,
carrier.price
)
) AS price,
IFNULL(
rsu.price_barred,
IF(
(
carrier.reseller_price_barred IS NOT NULL AND
carrier.reseller_price_barred != 0
),
carrier.reseller_price_barred,
carrier.price_barred
)
) AS price_barred
FROM
`core_carrier` AS carrier
LEFT OUTER JOIN
`core_resellerunlock` AS rsu ON (
rsu.carrier_id = carrier.id AND
rsu.reseller_id = 1
)
有人能建议一种使用SQLAlchemy查询生成器重写它的方法吗?我不确定这些SELECT ... IF
子句是否可行。在
编辑:我不想使用ORM来实现这一点(据我所知,纯粹使用SQLAlchemy ORM来执行是不可能的)。我只是在寻找一种使用SQLAlchemy的核心来实现这一点的一种或多或少的便携方式。在
可以使用the ^{} function 在查询中包含条件。这不会产生您所提供的SQL,但可以产生功能上等效的东西。在
前面提到的{cd2}和
您可能会发现创建一些helper函数来表示更高级别的}函数,以提高查询的可读性。例如:
^{pr2}$IFNULL
和{相关问题 更多 >
编程相关推荐