2010-06-27 4 views
0

j'ai posé une question plus tôt cette semaine et j'ai eu cette déclaration comme la réponse:Ajout clause where à cette instruction SQL

select published, count(*) nbr 
from table1 
group by published 
order by nbr desc 
limit 1 

Je veux maintenant savoir comment il est possible d'ajouter une clause where dans la déclaration afin que je puisse limiter les résultats que je reçois aux différents types de publications. Ma table ressemble à ceci:

  • id
  • Type
  • Titre
  • publié
  • La clause where sera sur la colonne de type ainsi, par exemple, où type=3.
    Merci à l'avance
    Dean

    Répondre

    5

    Il est temps de commencer à apprendre une SQL de base, vous ne pensez pas? :)

    http://dev.mysql.com/doc/refman/4.1/en/select.html

    SELECT 
    [ALL | DISTINCT | DISTINCTROW ] 
        [HIGH_PRIORITY] 
        [STRAIGHT_JOIN] 
        [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] 
        [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] 
    select_expr [, select_expr ...] 
    [FROM table_references 
    [WHERE where_condition] 
    [GROUP BY {col_name | expr | position} 
        [ASC | DESC], ... [WITH ROLLUP]] 
    [HAVING where_condition] 
    [ORDER BY {col_name | expr | position} 
        [ASC | DESC], ...] 
    [LIMIT {[offset,] row_count | row_count OFFSET offset}] 
    [PROCEDURE procedure_name(argument_list)] 
    [INTO OUTFILE 'file_name' export_options 
        | INTO DUMPFILE 'file_name' 
        | INTO @var_name [, @var_name]] 
    [FOR UPDATE | LOCK IN SHARE MODE]] 
    
    3

    Bien sûr, ajoutez simplement la déclaration WHERE après votre déclaration FROM, et avant votre déclaration GROUP BY.

    2
    select published, count(*) nbr  
    from table1 
    where type = 3 
    group by published 
    order by nbr desc 
    limit 1 
    
    2

    Voir, en ce qui concerne les règles de base, où clause met une contrainte sur chaque ligne. La contrainte de niveau de ligne crée d'abord une table sur laquelle le regroupement est effectué. Alors le groupe vient après Où. Si vous voulez une contrainte au niveau du groupe, vous pouvez utiliser la clause Having, mais souvenez-vous d'une chose, vous pouvez appliquer une contrainte uniquement aux éléments qui sont communs dans le groupe (dans votre cas, c'est publié).

    Comme déjà indiqué, la clause Where dans votre cas sera placée juste avant "group by" et après "from table1"