私は2つのテーブルを持っています。最初のテーブルにはユーザが提出したアイデアに関する情報が含まれ、2番目のテーブルにはアイデアの一部です。ユーザーが提出したアイデアは、0個または任意の数の添付ファイルを持つことができます。ファイル名を取得するためにSQLクエリを最適化します
Table 1:
-------------------------------------
Id Title Content Originator
-------------------------------------
1 aaa bbb John
2 ccc ddd Peter
--------------------------------------
Table 2:
---------------------------------------------
Id Idea_id Attachment_name
---------------------------------------------
1 1 file1.doc
2 1 file2.doc
3 1 file3.doc
4 2 user2.doc
---------------------------------------------
表1主キーはIdであり、表2主キーもIdである。 Idea_idは、表1のIDへの表2の外部キーである。
私はすべてのアイデアを添付ファイルとともにHTMLページに表示しようとしています。私がしてきたことは、表1のすべてのアイデアを得てから、アイデアレコードごとにテーブル2から添付レコードを取得することです。これは非常に効率が悪いようです。これを最適化してアイデアレコードとそれに対応する添付レコードを1つのクエリで取得できるか?
私は左外部結合を試しました(表1 左外部結合表2)が、テーブル1のId = 1の3つのレコードを与えます。私はクラブのアイデアの詳細と添付ファイルへのSQLクエリを探していますHTMLページの処理を効率的にするために、1行に名前を付けます。それ以外の場合、これにはどのような最適な解決策がありますか?
SQLは本当にあなたがレコードの固定数を持っていない場合には適していません。動的SQLを使用してn個のカラムを処理するものを構築するには、最初にどれくらいの数があるかを確認しますが、これはPHPで必要な構造を構築するのと比べて非常に複雑になります。 –
カンマで区切ったリストなどでファイル名を使用する場合は、「xmlパスを使用して」使用を検索してください。 –
この出力をしますか? http://stackoverflow.com/questions/15931607/convert-rows-to-columns-using-pivot-in-sql-server –