1つのクエリとして実行する必要はありません。通常、1つの複雑なクエリではなく、多くの小さな単純なクエリを使用することをお勧めします。実際、コードを更新してさらに多くのクエリを含めることをお勧めします。たとえば、「notexists()」の内容はサブクエリとして実行しないでください。パフォーマンスを向上させるために完全に別個のクエリにする必要があります。
2つの部分があります。最初に、CSVダウンロードをトリガーするために正しいHTTPヘッダーを送信する必要があります。
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.csv";' );
次に、データをCSV形式で印刷します。
while ($row = mysql_fetch_array($myQuery)) {
$first = true;
foreach ($row as $cell) {
if ($first)
$first = false;
else
print ',';
print '"' . addslashes($cell) . '"';
}
print "\n";
}
注:CSVは不適切な形式であり、これはMicrosoftExcelの一部のエディションでのみ機能します。ユーザーが住んでいる場所(例:ヨーロッパ)によっては、正しく機能しない場合があります。ただし、Excelのほとんどのエディションでは、上記は機能します。 CSVの使用を避ける以外に良い解決策はありません。