2011-07-21 10 views
2

J'essaye d'interroger 5 tables séparées dans ma base de données mysql, et montre l'acteur avec le plus d'éléments assignés à eux. Les structures de la table sont les suivantes:Comptage du plus grand nombre d'éléments assignés à un utilisateur utilisant le plus grand

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 | 

Je présume que je dois joindre à la demande, l'acteur et le tableau des éléments ensemble, en utilisant compte la fonction COUNT nombre d'éléments sont affectés à un acteur, puis utilisez GREATEST pour afficher l'acteur avec la plus grande quantité d'éléments affectés à leur?

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"; 

S'il vous plaît confirmer la meilleure façon de faire ce qui précède?

Répondre

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

merci OK, quelle est la meilleure façon d'afficher le contenu une fois que je l'ai inséré cette requête? J'utilise une boucle while et la commande LIMIT? –

+0

Quel est le but de la boucle while? Cela ne devrait renvoyer qu'une seule valeur. –

+0

Je veux afficher les 5 meilleurs acteurs, nous voulons aussi les rendre cliquables donc quand vous cliquez sur l'acteur, il vous amène à la page des acteurs. J'utilise ce qui suit: –

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"; 
Questions connexes