Мне нужно сделать запрос внутреннего соединения следующим образом:
SELECT * FROM accounting_supplier as s
LEFT JOIN (
SELECT position, supplier_id FROM accounting_supplierposition WHERE user_id = %s
) as sp on sp.supplier_id = s.id
ORDER BY sp.position", [request.user]
Модели выглядят так:
class Supplier(models.Model):
name = models.CharField(max_length=512)
short_name = models.CharField(max_length=100, unique=True)
class SupplierPosition(models.Model):
supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
position = models.PositiveIntegerField()
Я пробовал разные подходы, но никто не дает желаемого результата. Здесь описан способ: Django Left Outer Join , но отличный не работает с MySQL, поэтому я решил использовать RAW. Но похоже, что порядок не работает правильно. Если я скопирую / вставлю sql из моего кода в mysql командную строку, он будет работать нормально, но в Django он сделает выбор, но не упорядочит.
Есть предложения? Спасибо.