2011-01-16 10 views
0

を削除すると、私は[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] iが[1,5,9,2,3,4]

が、私の状況、その少し異なるが、それはMySQLのクエリからの結果だたい持っていると言うことができます

私だけasociative atribute「id_deseada」を持っているので、私は今

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

を行うので、その代わりに、私は最初の例のようにdomething行う必要があるだろうと思います。 sort $ resultを繰り返し回数で並べ替え、新しい配列 'count'で新しい配列を作成しますか?

このすべては、このため、クエリの始まり:

は、id_deseadaとしてタグをarticles.id SELECT *記事、tags.id_article = articles.idタグや( '名1 IN' tags.name FROM」。名前2「 『フォームの検索入力』、」...)

問題は、すべてのタグの1つの結果を返すことであると私はすべての記事の結果にしたい..

+4

なぜSQLクエリ自体でこの問題の(少なくとも一部として)解決しませんか? –

+0

私はmysqlでうまくうまくいきません。なぜなら、クエリを投稿するつもりです。 –

答えて

2

まず、のような値の配列を生成しますこれは:

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

countsort

$valCounts = array_count_values($vals); 
arsort($valCounts); 
$result = array_keys($valCounts); 
+0

私は試してみるつもりです。しかし、1つの質問、次に$ result [id_deseada]を実行できますか? forと$ result [$ i]? –

+0

後者の$結果はあなたの例では[1,5,9,2,3,4]になります。 – phihag

+0

いいえ、それは繰り返しなしで働いている!乾杯!順序は反対です(最後は1です)。 –

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

+0

私はあなたに知らせてくれるでしょう、gracias! –

関連する問題