ps filter game__vips__user user extra where CASE WHEN products_product

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
>>> ps.filter(game__vips__user=user).extra(
where=["CASE WHEN `products_product`.`visibility`='v' THEN `products_vips`.`user_id` IS NOT NULL
WHEN `products_product`.`visibility`='i' THEN `products_vips`.`user_id` IS NULL
ELSE true end"]).values('id')
SELECT `products_product`.`id` FROM `products_product`
INNER JOIN `products_game` ON (`products_product`.`game_id` = `products_game`.`id`)
INNER JOIN `products_vips` ON (`products_game`.`id` = `products_vips`.`game_id`)
WHERE (`products_vips`.`user_id` = 38593023
AND (CASE
WHEN `products_product`.`visibility`='v' THEN `products_vips`.`user_id` IS NOT NULL
WHEN `products_product`.`visibility`='i' THEN `products_vips`.`user_id` IS NULL
ELSE true
end))
из за этого выпиливаются все продукты где нету связки с пользователем
интересно, можно ли как то сделать полноценный лефт джойн по нескольким полям,
указывая самому значение по которому джойнить