Question

Quelle est la bonne façon de récupérer les valeurs maximales de toutes les colonnes d'une table avec une seule requête? Merci.

Clarification: la même requête devrait fonctionner sur n’importe quelle table, c’est-à-dire que les noms de colonne ne doivent pas être codés en dur.

Était-ce utile?

La solution

Vous devrez le faire en deux étapes: une pour récupérer la structure de la table, puis une seconde pour récupérer les valeurs maximales pour chaque

.

En php:

$table = "aTableName";
$columnsResult = mysql_query("SHOW COLUMNS FROM $table");

$maxValsSelect = "";
while ($aColumn = mysql_fetch_assoc($columnsResult)) {
  if (strlen($maxValsSelect) > 0) {
    //Seperator
    $maxValsSelect .= ", ";
  }  

  $maxValsSelect .= "MAX(" . $aColumn['Field'] . ") AS '" . $aColumn['Field'] . "'";
} 

//Complete the query
$maxValsQuery = "SELECT $maxValsSelect FROM $table";
$maxValsResult = mysql_query($maxValsQuery);

//process the results....

Autres conseils

SELECT max(col1) as max_col1, max(col2) as max_col2 FROM `table`;

Je pense (mais je serais heureux de me tromper) que vous devez connaître au moins le nombre de colonnes du tableau, mais vous pouvez alors le faire:

select max(c1),max(c2),max(c3),max(c4),max(c5)
from (
    select 1 c1, 1 c2, 1 c3, 1 c4, 1 c5 from dual where 0
    union all
    select * from arbitrary5columntable
) foo;

Évidemment, vous perdez tous les avantages de l'indexation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top