O problema que minha estrutura não tem como fazer por registros, pois são laudos cadastrados constantemente, e todos utilizam os mesmos campos, por isso perciso de todas estas colunas distintas.
Tem sim... é só criar uma tabela auxiliar com id_pai, valor e identificador. Pronto.... daí COUNT resolveria!
Estou tentando alguma coisa tipo:
select count(distinct *) from laudos_caminhao where * = 'F'
Bem... isso não dá. E é disso que eu estou falando! Você quer fazer um SELECT "invertido". Se tem como, eu não sei 
A minha sugestão é levar tudo isso aí para o PHP, colocar em uma array e fazer os cálculos no braço, invertendo a array...
Dava pra fazer isso com STORED PROCEDURE em BD, mas acho que não é a melhor saída, pois o processo seria o mesmo que levar para o PHP.
Entendi!
Um amigo desenvolveu o seguinte código:
$colunas = array();
$query = mysql_query("SELECT * FROM <tabela>");
while ($result = mysql_fetch_assoc($query)) {
foreach ($result as $coluna=>$valor) {
if (!isset($colunas[$coluna]))
$colunas[$coluna] = $valor;
else
$colunas[$coluna] .= $valor;
}
}
/*
echo "<pre>";
print_r($colunas);
echo "</pre>";
*/
$totais = array();
$buscar = 'F';
foreach ($colunas as $col=>$valores) {
$totais[$col] = substr_count($valores, $buscar);
}
rsort($totais);
$n = 1;
foreach ($totais as $coluna=>$valores) {
echo "A {$n}ª coluna que mais tem '{$buscar}' é a coluna {$coluna}";
if ($n++ > 10)
break;
}
Ele está me dando o seguinte resultado:
A 1ª coluna que mais tem 'F' é a coluna 0
A 2ª coluna que mais tem 'F' é a coluna 1
A 3ª coluna que mais tem 'F' é a coluna 2
A 4ª coluna que mais tem 'F' é a coluna 3
A 5ª coluna que mais tem 'F' é a coluna 4
A 6ª coluna que mais tem 'F' é a coluna 5
A 7ª coluna que mais tem 'F' é a coluna 6
A 8ª coluna que mais tem 'F' é a coluna 7
A 9ª coluna que mais tem 'F' é a coluna 8
A 10ª coluna que mais tem 'F' é a coluna 9
A 11ª coluna que mais tem 'F' é a coluna 10
Não está correto o resultado, mas acho q é o caminho.
Outro detalhe que eu precisava é saber o nome da coluna, e não qual o número dela, se for possível.
Se alguém puder analizar este código e saber o que pode está de errado?
Olá Pessoal, estou utilizando o forum abaixo com este mesmo assunto.
http://forum.imaster...p...=295598&hl=Obrigado.
______________________________________________________________________________________________________________________
RESOLVIDOOlá pessoal, agora sim está tudo certo, funcionou perfeitamente!
Um amigo em outro forum me ajudou e chegamos na seguinte conclusão:
O código ficou assim:
<? include("conexao.php");
$sql = "
CREATE TEMPORARY TABLE `g34731_inspeserv`.`contar` (
`Id` INT( 10 ) NOT NULL AUTO_INCREMENT ,
`Campo_F` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `Id` )
) ENGINE = MYISAM
";
mysql_query($sql) or die (mysql_error());
$rs = mysql_query("SELECT * FROM laudos_caminhao") or die (mysql_error());
while ($L = mysql_fetch_assoc($rs)) {
foreach($L as $nome => $valor) {
if ($valor == "F" || $valor == "f") {
mysql_query("INSERT INTO contar (Campo_F) VALUE ('".$nome."')") or die (mysql_error());
}
}
};
$sql = "SELECT Campo_F,COUNT(Id) AS ct FROM contar GROUP BY Campo_F ORDER BY ct DESC LIMIT 0,10";
$rs = mysql_query($sql) or die (mysql_error());
while ($L = mysql_fetch_assoc($rs)) {
print("A coluna ".$L['Campo_F']." tem ".$L['ct']." \"F\"<br> ");
}
?>
O resultado foi este:
A coluna estabilizador_dianteiro tem 6 "F"
A coluna feixe_molas_dianteiro tem 5 "F"
A coluna freios_dianteiros tem 4 "F"
A coluna freios_traseiros tem 4 "F"
A coluna comotador tem 4 "F"
A coluna motor tem 4 "F"
A coluna parachoque_traseiro tem 3 "F"
A coluna estabilizador_traseiro tem 3 "F"
A coluna estepe tem 3 "F"
A coluna setor_direcao tem 3 "F"
Muito Obrigado amigos.
Abraços!
Edição feita por: Fabio Penna, 12/07/2008, 11:42.