2011-07-04 6 views
0

何らかの理由により、このクエリが動作しません。グループ名前順名前順すべての文字を返します

<p align="center"> 
<?php 
$result1 = mysql_query("SELECT name FROM comics GROUP BY name ORDER BY name ASC"); 
while ($row = mysql_fetch_array($result1)) 
{ 
?> 
<a href="?sort=<?php echo substr($row['name'], 0, 1); ?>"><?php echo substr($row['name'], 0, 1); ?></a>&nbsp;  
<?php } ?>  
</p> 

出力

2 2 3 A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A V V V V Z 

代わりに、それは通過して、名前でグループ化し、最初の文字で、それを破壊し、ちょうどそれがそれらすべてを表示する1つの文字を表示するには。

助けてくださいか?

+0

私は理解していません、最初の文字以上のものを表示することになっていますか?これは、あなたが 'substr($ row ['nam']、0、1);'を使って行うこととまったく同じだからです。 – hughes

+0

または、あなたは漫画のリストの別個の最初の文字を取得しようとしていますか?たとえば、 "Alpha、Apples、Beta、Babies、Delta"というデータでは、 "A B D"を出力したいとします。 – hughes

+0

SQLコンソールでこのクエリを実行すると、返される行の数はいくつですか? – Karolis

答えて

2

あなたGROUP BY。あなたがPHPで結果を反復し、最初の文字だけを表示するよりも、もちろん、あなたのテーブルが含まれている場合。名前BY

Abcの アデ AFG

GROUPは、それらすべてを返します。最初の文字のみを表示すると「A」が3回印刷されます。あなただけの最初の文字を検索したい場合は

あなたは

SELECT 
LEFT(name, 1) AS fl 
FROM 
... 
GROUP BY 
fl 
+0

ありがとうございます!チャームのように働いた! – rackemup420

0

漫画・グループからnameとしてSELECT SUBSTRING(1名)SQLでフルネームBY 1つのASC 1つのORDER BY

+0

警告:mysql_fetch_array():指定された引数は、16行目の/home/rackemup/public_html/inc/sort.phpにある有効なMySQL結果リソースではありません – rackemup420

2

試みることができるあなたのクエリがうまく働きました。あなたはすべての漫画の名前をすべて尋ね、名前を昇順にグループ化しました。問題はちょうどあなたの漫画の名前の最初の文字をグループ化したいということです。 PHPで

SELECT LEFT(`name`,1) AS 'part' 
FROM `comics` 
GROUP BY LEFT(`name`,1) 
ORDER BY LEFT(`name`,1) ASC; 

それはあなたがデータベースに持っていますどのように多くの異なる名前になりまし十分echo $row['part'];

+0

私は遅く書くことを決めました...:) – Marco

+0

あなたのお役に立てていただきありがとうございます。 – rackemup420

0

にあります。

adam 
andy 
abraham 
alfie 

あなたは

SELECT distinct(name) FROM comics ORDER BY name ASC 

を使用して

a 
a 
a 
a 

で終わるだろうします:あなたは、あなたがのような名前のセットを返された場合ように返された結果に部分文字列を行っています一意の名前を昇順に返す。

関連する問題