2011-07-21 10 views
2

mysqlデータベースの5つのテーブルを照会しようとしていて、割り当てられているアイテムの量が最も多いアクタを表示しようとしています。テーブル構造は次のとおりです。最大値を使用してユーザに割り当てられたアイテムの最大数を計算する

私は、その後に割り当てられた項目の最高額と俳優を表示するには、GREATESTを使用して、アクターに割り当てられているどのように多くの項目数える私はCOUNT関数を使用して、一緒に要求、俳優やアイテムのテーブルに参加する必要があると推定
item 
itemid | item | description | brand | date | time | path | 

actor 
actorid | name | actorthumb | bio | 

brand 
brandid | brandname | description | image | 

movie 
movieid | title | genre | year | moviethumb | synopsis| 

request 
requestid | userid | itemid | brandid | movieid | actorid | content | requestdate | 

それら?

The query to join all the tables is 
$query = "SELECT greatest i.*, a.*, b.*, m.*, r.* FROM item AS i, actor AS a, brand AS b, movie AS m, request AS r 
    WHERE r.itemid = i.itemid 
    AND r.actorid = a.actorid 
    AND r.brandid = b.brandid 
    AND r.movieid = m.movieid"; 

上記を行うには、最善の方法を確認してください。

答えて

1
SELECT a.actorid, a.name 
    FROM request r 
     INNER JOIN actor a 
      ON r.actorid = a.actorid 
    GROUP BY a.actorid, a.name 
    ORDER BY COUNT(DISTINCT r.itemid) DESC 
    LIMIT 5 
+0

OKおかげで、私はこのクエリを挿入した後、コンテンツを表示するための最良の方法は何ですか?私はwhileループとLIMITコマンドを使用していますか? –

+0

whileループの目的は何ですか?これは1つの値を返すだけです。 –

+0

トップ5の俳優を表示したいと思います。また、これらのクリック可能なボタンをクリックして、俳優をクリックすると俳優ページに移動します。私は以下を使用しています。 –

0
The query to join all the tables is 
$query = "SELECT i.*, a.*, b.*, m.*, r.* FROM item AS i, actor AS a, brand AS b, movie AS m, request AS r 
    WHERE r.itemid = i.itemid 
    AND r.actorid = a.actorid 
    AND r.brandid = b.brandid 
    AND r.movieid = m.movieid 
    ORDER BY count(i.*) DESC"; 
関連する問題