そこで、2 つのテーブルから大量のデータを取得して結合する非常に複雑なクエリを作成しました。
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 のコアを使用してこれを行う多かれ少なかれ移植可能な方法を探しています。