2017-12-21 4 views
-1

私は、現在選択されて得るときだけオンザフライそれらを実行するために、私は特定の表列にSELECTクエリを保存するMySQLでデータベーススキーマについて考え、代わりに実際のクエリの合格結果を抱えています。テーブルにSQLクエリを保存し、オンザフライで実行する - 可能?いい練習?

これはどういうわけか可能でしょうか?あるいはこれは悪い習慣かもしれませんか?技術的には、結果テーブルを1つのフィールドに渡すことは可能ですか?少なくとも、入れ子にされた結果配列を取得するには、PDOを介してクエリを実行することができますか?選択肢はありますか?

私は、これは、ストアド・プロシージャによって達成することができることを読んで、私のグリップが、これらの概念は、私はそれを達成するために、それらを使用することができますどのように考えることはできません。

+0

XY問題の教科書の例です。なぜあなたはそのような奇妙な混乱を望んでいますか? –

+0

私は単純なJSONデータを代わりに保存したいとしましょう。このデータは一定ではなく、いくつかの他のテーブルの内容に依存しているため、クエリでよりうまく処理できると思っていました。問題は、各行が異なる方法でテーブルに依存することです。つまり、すべての行を処理するための値をバインドするためのグローバルクエリを1つ書くだけではなく、それぞれが独自の行を処理する一連のクエリが必要です。これにはより良い解決策がありますか、あるいは私はちょうど悪いデザインをしていますか?私はここでメタデータを管理していることに言及する価値はあると思います。 – StrikeAgainst

+0

これは確かに悪い設計です。より良い実装のため、情報の不足のために何も示唆することはできません。あなたがちょうど言ったことから、私はデータベース構造にも欠陥があると推測することができます。データを正規化しましたか? NoSQLソリューションを検討しましたか?たとえば、Mongoは実際にjsonを格納します。しかし、私は再び、あなたはXYの問題を尋ねています。これらのマイクロジャンクションなどが必要な初期のアプリケーションを記述します。より良いコメントではなく、堅実でよく考えられた質問 –

答えて

1

あなたはこれを行うことができますが、あなたはそれを行うためのどのような目的を持っていますか?

私は、ビューを使用することをお勧めします:

  • ビューが作成されたときに構文が無効な構文を有することができるフィールドで SQLを保存するとは異なり、有効にする必要があります。
  • デバッグや変更が容易です。たとえば、

、あなたが店にしたいクエリのいずれかを言わせている:今

CREATE VIEW prod_cat_count AS 
SELECT product_category, COUNT(*) AS category_count 
FROM product 
GROUP BY product_category; 

SELECT product_category, COUNT(*) AS category_count 
FROM product 
GROUP BY product_category; 

あなたはこのクエリを定義する新しい「ビュー」オブジェクトを作成することができます「prod_cat_count」というオブジェクトがデータベースに格納されます。内部的には、データベースは「prod_cat_count」が前述のSELECTクエリと等しいことを知っています。ビューが作成されると、データベースは構文を検証します(すべての列が存在するかどうかをチェックし、GROUP BYを忘れていないかどうかを確認します)。

このデータを取得する/ (例えば、SQLまたはアプリケーションコードで)このステートメントを実行することができます:

SELECT product_category, category_count 
FROM prod_cat_count; 

あなたは、あなたが製品カテゴリがカウントされ、ビューを調整することができる方法を変更することを決定した場合:

SELECT product_category, COUNT(*) AS category_count 
FROM product 
GROUP BY product_category 
ORDER BY product_category; 

希望に役立ちます!

+0

どのくらい正確に使用しますか?代わりにビュー名を格納し、サブクエリ内のそれぞれのビューを参照しますか? – StrikeAgainst

+0

そうです。私は私の答えをさらに説明するように更新します。 – bbrumm

関連する問題