クエリでの私の唯一の経験は MySQL ですが、うまくいけば、それは十分に似ています。
サブクエリが SELECT 句にあるため、クエリが奇妙に見えます。私はこれまで見たことがありません...しかし、どうやらMySQLでサポートされているようです。通常、サブクエリは FROM または LEFT JOIN または JOIN の後に来ます。
あなたの例は、LEFT JOINで実装できるほど単純です。
SELECT C.guid, ..., COUNT(distinct D.id) as numprogs
FROM Computers AS C
LEFT JOIN ComputerData as D ON D.computer_id = C.id
この場合、LEFT JOIN は使用する適切なタイプの結合です。D テーブルに特定の C レコードに一致するレコードがなくても、結果セットにはその C レコードが含まれ、numprogs はゼロになるためです。期待するでしょう。
本当にサブクエリを使用したい場合は、これを試してください:
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
クエリを単純化して、機能するはずの最も単純なクエリにすることをお勧めしますが、機能しません。次に、データベース エンジンが返す具体的なエラー メッセージをお知らせください。
編集:サブクエリに関するMySQLの章を調べましたが、サブクエリの後に「as numprograms」句を削除してみる必要があるようです...サブクエリから出てくる列の命名について選択肢がないかもしれませんサブクエリを作成した後。