クエリでの私の経験は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を、使用する参加の正しいタイプであります特定のCレコードのDテーブルでは、結果セットにはその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 chapter about subqueriesに興味があり、サブクエリの後に "as numprograms"句を削除してみるといいでしょう。おそらく、あなたのサブクエリの後に出てくるカラムの命名について何も選択できないようです。サブクエリを作成した後でサブクエリを作成します。
エラーは何ですか? –
こんにちは、 申し訳ありませんが、修正されました。みなさん、ありがとうございます。 Azuka – Zahymaka