私はビデオタギングシステムを開発中です。私は前回のクエリを実行しなければならないため、検索結果に必要な各動画の固有の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個のクエリ(スクリプトの最初のものを含む)!
ご協力いただきまして誠にありがとうございます。
ちょうどこれで遊んでいて、すごくうまくいきました!一度機能を教えていただければ、数秒で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