私は、SQLクエリに必要なすべてのデータを取得しようとする際に、いくつかの重大な問題を抱えています。私はまだクエリーについては新しいので、これを可能な限り最善の方法で説明しようとします。MySQLは、直列化されたデータ、再帰で2つのテーブルにまたがって結合しますか?
私はWordpressのプラグインNextGenギャラリーでクロスクエリをしようとしています。基本的に2つのテーブルnggalbum
とnggallery
があります。私がしようとしているのは、すべてのアルバムとギャラリーのネストされたリストを作成することです。
nggalbum
のデータが列id
、name
、slug
、previewpic
、albumdesc
、sortorder
、およびpageid
が含まれています。私が興味を持っているのは、id
,name
,slug
、sortorder
です。 sortorder
の値は、このエントリと他のすべてのアルバムおよびギャラリーエントリの関係データを持つシリアル化されたデータです。例:a:2:{i:0;s:2:"a2";i:1;s:2:"a6";}
これは基本的に、現在のクエリ項目には、a2
とa6
の2つのサブアルバム(対応するidに "a"が付いています)があることを意味します。ギャラリーがある場合、その番号にはa
という接頭辞がなく、ngggallery
gid
(1秒後に表示されます)です。
nggalbum
テーブルからすべてのデータを取得し、これを使用
:
$albums = $wpdb->get_results("SELECT * FROM $wpdb->nggalbum" , OBJECT_K);
foreach ($albums as $key => $value) {
$albums[$key]->id = 'a' . $key;
$albums[$key]->galleries = empty ($albums[$key]->sortorder) ? array() : (array) unserialize($albums[$key]->sortorder) ;
$albums[$key]->name = stripslashes($albums[$key]->name);
$albums[$key]->albumdesc = stripslashes($albums[$key]->albumdesc);
}
サンプルデータ:
Array
(
[1] => stdClass Object
(
[id] => a1
[name] => Image Gallery
[slug] => image-gallery
[previewpic] => 0
[albumdesc] =>
[sortorder] => a:2:{i:0;s:2:"a2";i:1;s:2:"a6";}
[pageid] => 0
[galleries] => Array
(
[0] => a2
[1] => a6
)
)
[2] => stdClass Object
(
[id] => a2
[name] => ALBUM 1 - High res
[slug] => album-1-high-res
[previewpic] => 0
[albumdesc] =>
[sortorder] => a:2:{i:0;s:1:"2";i:1;s:1:"3";}
[pageid] => 0
[galleries] => Array
(
[0] => 2
[1] => 3
)
)
を、彼らはアルバムであり、私ので、私はこれらのIDのすべてにa
プレフィックスを追加figuredこれは後でお手伝いします。私が何をやっているのか分からないので、これは当てはまらないかもしれません。
nggallery
は列gid
、name
、slug
、path
、title
、galdesc
、pageid
、previewpic
、およびauthor
が含まれています。関連する列は、gid
,name
,slug
,path
およびtitle
です。
私はnggallery
テーブルからすべてのデータをつかむためにこれを使用する:
$galleries = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->nggallery", OBJECT_K);
foreach ($galleries as $key => $value) {
$galleriesID[] = $key;
$galleries[$key]->counter = 0;
$galleries[$key]->title = stripslashes($galleries[$key]->title);
$galleries[$key]->galdesc = stripslashes($galleries[$key]->galdesc);
$galleries[$key]->abspath = WINABSPATH . $galleries[$key]->path;
}
サンプルデータ:
Array
(
[2] => stdClass Object
(
[gid] => 2
[name] => new_collection
[slug] => new-collection
[path] => wp-content/gallery/new_collection
[title] => NEW COLLECTION
[galdesc] =>
[pageid] => 0
[previewpic] => 8
[author] => 1
[counter] => 0
[abspath] => /Applications/MAMP/htdocs/igal/wp-content/gallery/new_collection
)
[3] => stdClass Object
(
[gid] => 3
[name] => cha-collection
[slug] => cha-collection
[path] => wp-content/gallery/cha-collection
[title] => CHA COLLECTION
[galdesc] =>
[pageid] => 0
[previewpic] => 15
[author] => 1
[counter] => 0
[abspath] => /Applications/MAMP/htdocs/igal/wp-content/gallery/cha-collection
)
私は動けなくなるところ今これはあります。私は実際には、各アルバムのgalleries
配列を解析し、対応するアルバムやギャラリーとnggallery
から関連付けするコードを書くことが大好きです。私もこのことについて起こって開始する方法を全くわからない
(a1) [link] Title
(a2) [link] Title
1 [link] Title
2 [link] Title
3 [link] Title
(a3) [link] Title
1 [link] Title
[...]
:
結局私は、次のような、アルバム/ギャラリーのネストされたリストを達成するのが大好きです。私はいくつかのものをループして、foreach
ステートメントを通そうとしましたが、ほとんど失敗しました。私はこれについてgoogleを検索するだろうが、私はこの技術が何であるかを知らない。
私は本当にのように何かを理解するのが好きなので、このテクニックに光を当てることができれば、私は大いに借りています。類似のチュートリアルや基本的な概念へのリンクは、私にとって非常に有益です。私は誰も私のためにすべてのコードを行うことを期待していませんが、正しい方向へのステップは大いに評価されるでしょう(そして、あなたがコードを実行したい場合、いくつかのステップで、私はもちろん議論しません;))。
ありがとうございました!
トレ
これは再帰の例ですか?私はそれに多くの経験がありません。私は今それについて読んでいる。 – tr3online