0

私はphpでこれを行う必要があり[1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,4,5,5,5,5,5,5,5,5,5,5,5,9,9,9,9,9] ます[1,5,9,2,3,4]

しかし、私の状況は少し異なります.mysqlクエリの結果です

私は連想属性「id_deseada」しか持っていないので、今はそうしています

while($row = mysql_fetch_array($result){
         $t = $row['id_deseada'];
 }

その代わりに、最初の例のように何かをしなければならないと思います。$result を繰り返し回数で並べ替えると、新しいフィールド 'count' を持つ新しい配列の方が良いのではないでしょうか?

これはすべて、次のクエリが原因で始まります。

SELECT article.id as id_deseada,tags.* FROM article,tags WHERE tags.id_article = article.id AND tags.name IN ('名前 1','名前 2','フォーム検索入力','...)

問題は、すべてのタグに対して 1 つの結果が返され、すべての記事の結果が必要なことです..

4

2 に答える 2

2

まず、次のように値配列を生成します。

$vals = array();
while($row = mysql_fetch_array($result){
         $vals[] = $row['id_deseada'];
}

次に、カウントして並べ替えます

$valCounts = array_count_values($vals);
arsort($valCounts);
$result = array_keys($valCounts);
于 2011-01-16T12:07:29.807 に答える
0

実際には、SQL クエリを使用して実行できます。たとえば、次の表があります。

create table lol (id_deseada int);
insert into lol values (1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(2),(3),(4),(5),(5),(5),(5),(5),(5),(5),(5),(5),(5),(5),(9),(9),(9),(9),(9);

id_deseadaグループ化と順序付けを使用して、繰り返しによってデータベースの並べ替えからを選択できます。

SELECT id_deseada FROM lol
GROUP BY id_deseada
ORDER BY COUNT(*) DESC

結果: 1、5、9、2、3、4。

于 2011-01-16T12:16:30.707 に答える