2011-07-01 6 views
0

私はビデオタギングシステムを開発中です。私は前回のクエリを実行しなければならないため、検索結果に必要な各動画の固有のIDを知っていますが、複数のカテゴリになっているので、検索結果の各動画のすべてのタグを表示しますメインページにクリックしなくても投稿者が表示されます。MYSQLのすべての結果のすべてのタグを取得します。クエリ

次のコードは、検索結果の2つの動画の5行を返します。私はいつもその結果の周りをループすることができますが、それは私が限界関数を使用することができないことを意味し、私はそれを行うためにいくつかのPHPを構築する必要があります。理想的には私が必要なもの

SELECT * FROM tags 
JOIN siteupdates ON tags.item_id = siteupdates.clip_id 
JOIN updatetype ON siteupdates.updatetype = updatetype.id_type 
JOIN tagnames ON tags.tag = tagnames.tagid 
WHERE tags.item_id IN (248,257) 
ORDER BY siteupdates.clip_date DESC 

結果(これは最初の5つの結果の一例であり、Iは関係のない列の大部分を切り出した)

 
uid/item_id/tag/updatetype/tagname/tagtype 
1560/248/14/1/tag 14/Category 
1561/248/3/1/tag 3/Contributor 
1562/248/7/1/tag 7/Category 
543/257/43/1/tag 43/Category 
544/257/3/1/tag 3/Contributor 

は2行結果でありますすべてのタグデータを含んでいます。

代わりに、ちょうどMYSQLだけでは不可能なことを尋ねていますが、私の元々のPHPでのループ計画は唯一の選択肢ですか?各結果のタグ情報を取得するための新しいクエリは、ページあたり50個の結果を持つことができるので、私には良いアイデアのようには聞こえません。したがって、合計52個のクエリ(スクリプトの最初のものを含む)!

ご協力いただきまして誠にありがとうございます。

答えて

0

あなたが正しいと思ったら、すべてのタグが必要ですが、1つの結果レコードにつき1つのタグは必要ありませんが、すべてが1つになりますか?この場合、GROUP_CONCAT()が役立つ可能性があります。

+0

ちょうどこれで遊んでいて、すごくうまくいきました!一度機能を教えていただければ、数秒でGoogleの素晴らしい例が見つかりました。あなたは私の時間を節約しました!最終的なSQL(っぽい)がある - タグ FROMタグ がtags.item_id = siteupdates.clip_id siteupdates.updatetype = updatetype.id_type tags.tag ONタグ名を登録しよON UPDATETYPEのJOIN ON siteupdatesを参加すると、* GROUP_CONCAT(tagnames.tagname)を選択します= tagnames.tagid WHERE tags.item_id IN(2,3,4,5) GROUPBY tags.item_id ORDERBY siteupdates.clip_date DESC LIMIT 0、30 – user825494

関連する問題