2012-03-08 8 views
0

検索結果の注文に問題があります。Mysql - 別のテーブルにあるIdの数で結果を並べ替えます。

私は写真についての情報を持っており、すべての写真は、IDを持っている二つのテーブル

表の写真(最初のテーブル)を持っています。

誰かが結果(写真)スクリプトをクリックすると、その情報が第2のテーブルに保存されます。 表(第2表)この

______________________ 
|ID of photo| keyword| 

のように見え、第二表に写真IDの数によって、例えば

のでorder by (something) + (something) + (count id´s of photo for phrase by user (keyword))

を結果を並べ替える:テーブルで

は次のとおりです。

|id|keyword| 
|5 |car | 
|5 |car | 
|6 |car | 
|6 |car | 
|2 |car | 
|5 |car | 

検索クエリ:

SELECT * FROM bx_photos_main WHERE (Title LIKE '%keyword%') OR (Desc LIKE '%keyword%') OR (Categories LIKE '%keyword%')order by (order) DESC LIMIT 0, 10;

、誰もが「車」写真5は初めてとなる、6二と第三は、ID 2と一緒に写真になります見つけるしようとすると...誰かが私を助けることができますか?

構造

ID  -  int(10)  -  UNSIGNED  -  AUTO_INCREMENT
bx_photos_main _bx_hledej(seccond表)
id     - int(11)
keyword - varchar(20)

+1

これは宿題ですか? –

+1

これまでに試した質問を投稿できますか? –

答えて

0

カウント(および順序)には、キーワードごとの写真の数によって、あなたはこのようなクエリを使用できます。

SELECT 
    photos.id, 
    photos.Title, 
    photos.Desc, 
    photos.Categories 
FROM bx_photos_main photos 
LEFT OUTER JOIN _bx_hledej keywords 
ON keywords.id = photos.id 
WHERE (Title LIKE '%keyword%') OR (Desc LIKE '%keyword%') OR (Categories LIKE '%keyword%') 
GROUP BY keywords.keyword 
ORDER BY COUNT(*) DESC 
+0

ありがとうございました!それはよさそうだけど、私は順序で注文する必要があります(これ)。訪問者はボタンで注文を変えることができ、スクリプトはこの部分だけを変更するためです。 – user1257124

+0

私はあなたが欲しいものを理解していません。実際のDB構造に基づいて更新されたクエリを参照してください。 – bfavaretto