私のタイトルは、私が必要としていることを完全に要約しているわけではありませんが、私がやろうとしていることを説明するときに、より明確になることを願っています。入力したキーワードを取得し、それを使用して選択したデータをExcelスプレッドシートに出力するPHPベースのWebページを作成しようとしています。
私の最初のステートメントは、キーワードを使用して、それが参照する'itemid'を検索します。これは、独自のテーブルにリストされています(キーとIDの個別のテーブルは理想的ではありませんが、これを変更することはできません)。
SELECT items.itemid
FROM items
LEFT JOIN hosts ON hosts.hostid = items.hostid
WHERE hosts.host LIKE 'keyword';
これにより、0件の結果または10件以上の結果を返す可能性のある数値の選択が返されます。次に、これらの結果に基づいて選択した結果を返す必要があります。
例えば:
SELECT items.name, data.clock, data.value
FROM data
LEFT JOIN items ON data.itemid = items.itemid
WHERE item.itemid = '<First result from previous statement>'
GROUP BY data.value
ORDER BY items.name, data.clock ASC
LIMIT 15
UNION ALL
SELECT items.name, data.clock, data.value
FROM data
LEFT JOIN items ON data.itemid = items.itemid
WHERE item.itemid = '<Second result from previous statement>'
GROUP BY data.value
ORDER BY items.name, data.clock ASC
LIMIT 15
...
So on for however many results there were
...
SELECT items.name, data.clock, data.value
FROM data
LEFT JOIN items ON data.itemid = items.itemid
INTO OUTFILE '/file/location.csv' FIELDS ..ect
WHERE item.itemid = '<x result from previous statement>'
GROUP BY data.value
ORDER BY items.name, data.clock ASC
LIMIT 15
UNIONALLの代わりにWHEREINを使用しますが、最大100,000行以上になる可能性があるため、値ごとに15件の結果に制限する必要があります。
最初のステートメントの結果を配列に入力し、その配列を2番目のステートメントの変数として使用することは可能かもしれないと思っていましたが、変数の量は毎回異なる可能性があるため、どのように書くことができるかわかりませんコードを必要な回数繰り返し、INTOOUTFILEを正しい場所に配置するようにコードを記述します。
必要なものを言葉で表現するのに苦労しましたので、不明な点がありましたらお知らせください。必要な情報をできるだけ早く提供します。
よろしくお願いします。