Orada başlık, sorgudan neye ihtiyacım olduğunu tam olarak açıklayamıyor.Müşteriler için toplam siparişleri seçmek için MySql sorgusu
@sgeddes, aşağıdaki sorguyu oluşturmama yardımcı oldu, ancak sorgunun, gereksinimlerimi gerçekleştirmek için bazı değişiklikler yapması gerekiyor. Ayrıca silinen müşterileri seçmemek için sorguyu biraz değiştirdim, ancak bu sorgunun yazılma şeklinden dolayı çok fazla değişiklik yapamadım SQL bilgim.
SELECT d.customer_id,d.fname,d.lname,d.isactive,
o.lastdate,
Count(o2.order_id) AS 'total_orders'
FROM customers d
LEFT JOIN (SELECT MAX(order_id) order_id, customer_id
FROM orders
GROUP BY customer_id) m on d.customer_id = m.customer_id
LEFT JOIN orders o on m.order_id = o.order_id
LEFT JOIN orders o2 on d.customer_id = o2.customer_id
AND o2.balance > 0 AND o2.isActive > -1
WHERE d.user_id =945766 AND d.isActive > -1
AND o2.customer_id IS NULL
GROUP BY d.customer_id
Aşağıdaki üç gereksinime ihtiyacım var. isActive ile müşteri için
- sayım siparişler> -1 (-1 = silinmiş)
- Müşteriler siparişler değil tablosunda (hayır siparişlerde müşteri). isActive = 0 ve bunlara karşılık gelen sipariş ile
- Müşteriler tüm ihtiyacım isActive = 0 ile müşteri yani kısaca
saymak ve total_orders sütun için gerçek bir # alır.
Daha iyi bir şekilde yardım etme girişimim gereği, gereksinimi anlamış oldum, bir SqlFiddle oluşturdum.
Bu sorgu başka bir amaç için tasarlanmış olabilir ve basit bir sorguya ihtiyaç duyduğunuzda bile daha karmaşık olabileceğini düzenlemek için olabilir ... bu yüzden ihtiyacınızın ne olduğunu bize bildirin. –
Yani 3 ayrı sonuç için 3 ayrı sorgu istiyorsun? – Strawberry
@strawberry. UNION tarafından birleştirilen 3 ayrı sorgu kullanıyordum ve önceki yazımda sgeddes tarafından önerildiği gibi, onun yerine sorgu sürümünü kullanmaya başladım. – wilson382