2017-04-20 17 views
0

私はWordPressで動的フォームビルダープラグインを使用しています。このフォームのデータを表に挿入したデータを入力したとき。テーブルは以下のようになります。テーブルから複数の行を取得し、結合した情報を1つのクエリで表示するにはどうすればよいですか?

id entry_id field_id  slug   value 
1  1   fld_7213434 name   abc 
2  1   fld_5474822 father   def 
3  1   fld_4459896 gender   Female 
4  1   fld_6364274 village_name ijk 
20 2   fld_7213434 name   J Jahan 
21 2   fld_5474822 father   Md Ali 
22 2   fld_4459896 gender   Female 
23 2   fld_6364274 village_name ijk 

私は

S.N. name  father gender village_name 
1  abc  def  Female ijk 
2  J Jahan Md Ali Female Adabor 

私はそれをどのように行うことができ、以下のように、このテーブルのデータを表示する必要がありますか?

+0

ここではPHPの質問のためにたくさんのPHPコードがあります。これは文脈の点では大変重要です。 – tadman

答えて

1

ひとつのアイデアは、それ自体にテーブルを結合することです。もちろん

SELECT 
    t1.entry_id `S.N.`, 
    t1.value name, 
    t2. value father, 
    t3.value gender, 
    t4.value village_name 
FROM mytable t1 
LEFT JOIN mytable t2 ON t2.entry_id = t1.entry_id AND t2.field_id = 'fld_5474822' 
LEFT JOIN mytable t3 ON t3.entry_id = t1.entry_id AND t3.field_id = 'fld_4459896' 
LEFT JOIN mytable t4 ON t4.entry_id = t1.entry_id AND t4.field_id = 'fld_6364274' 
WHERE 
    t1.field_id = 'fld_7213434' 

、代わりのmytableあなたは、あなたの質問には言及していない、あなたの正しいテーブル名を使用する必要があります。

参加は、関連するすべてのテーブルのCartesion製品(Wikipedia)です。正しい組み合わせの結果セットの行をフィルタリングした後(この場合は、entry_idfield_idをフィルタリングする必要があります)、必要なものを正確に取得できます。

パフォーマンス上の理由から、列にインデックスentry_idfield_idが含まれていることがわかります。

関連する問題