Sorgulardaki tek deneyimlerim MySQL ile olsa da, umarım yeterlidir.
Sorgunuz bana tuhaf geliyor çünkü alt sorgunuz SELECT deyimindedir. Bunu daha önce hiç görmedim ... ama görünüşe göre MySQL'de destekleniyor. Genellikle alt sorgu bir FROM veya SOL JOIN veya JOIN sonra gelir.
Sizin örnek bir SOL uygulamak olabilir yeterince basittir
JOIN:
Bu durumda
SELECT C.guid, ..., COUNT(distinct D.id) as numprogs
FROM Computers AS C
LEFT JOIN ComputerData as D ON D.computer_id = C.id
, SOL eşleşen kaydında olsa dahi, çünkü kullanmak katılmak doğru türüdür KATILIN Belirli bir C kaydı için D tablosu, sonuç kümeniz yine de C kaydının ve numprogs'un beklediğiniz gibi sıfır olacağını içerir. Bunun çalışması gerekir mümkün olan en basit sorgu için buraya getirmeni Sorgunuzla basitleştirilmesi öneririz
SELECT C.guid, ..., S.numprogs
FROM Computers AS C
LEFT JOIN
(SELECT computer_id, COUNT(*) as numprogs
FROM ComputerData GROUP BY computer_id) AS S
ON C.id=S.computer_id
ama çalışmıyor: Gerçekten bir alt sorgu kullanmak istiyorsanız
, bunu deneyin. Ardından, veritabanı motorunuzun geri döndüğü belirli bir hata iletisini bize bildirin.
Düzenleme: Ben MySQL chapter about subqueries içinde loooked ve alt sorgunuzdan sonra "numprograms" yan tümcesi kaldırmayı denediğiniz gibi görünüyor ... belki de gelen sütunun adlandırma hakkında herhangi bir seçim almazsınız alt sorguyu oluşturduktan sonra alt sorgu.
Hata nedir? –
Merhaba, Üzgünüm, düzeltildi. Hepinize teşekkürler, Azuka – Zahymaka