2011-07-04 2 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 

아웃풋 이름으로 통해 그룹화 가서 먼저 문자로 그것을 분해하고 그냥 그들 모두를 표시 한 문자를 표시.

어떤 도움이 필요합니까?

+0

이해가 안됩니다. 단지 첫 글자 이상을 표시해야합니까? 이것이 바로 여러분이'substr ($ row [ 'nam'], 0, 1); '과 함께하는 것과 정확히 같기 때문입니다. – hughes

+0

아니면 만화 목록의 고유 한 첫 글자를 얻으려고하십니까? 예를 들어, "Alpha, Apples, Beta, Babies, Delta"데이터의 경우 "A B D"를 인쇄하려고합니다. – hughes

+0

SQL 콘솔에서이 쿼리를 실행하면 얼마나 많은 행이 반환됩니까? – Karolis

답변

2

당신 GROUP 1 BY BY 만화 그룹에서 name 같은; PHP에서 결과를 반복하고 첫 번째 문자 만 표시하면됩니다. 물론 테이블에 포함 된 경우. 이름으로

ABC 방송 에이드 AFG

그룹은 그들 모두를 반환; 첫 번째 문자 만 표시하면 "A"가 세 번 인쇄됩니다. 당신이 첫 번째 문자를 검색하려면

당신은

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

감사합니다! 매력처럼 일했습니다! – rackemup420

0

SELECT SUBSTRING (이름, 1) 1 ORDER ASC SQL의 전체 이름으로

+0

경고 : mysql_fetch_array() : 제공된 인수가 /home/rackemup/public_html/inc/sort.php의 유효한 MySQL 결과 리소스가 아닙니다. 16 행 – rackemup420

2

시도 할 수 귀하의 질의는 잘했다. 당신은 모든 만화의 모든 이름을 물어 오름차순으로 그룹화했습니다. 문제는 단지 만화 이름의 첫 글자를 그룹화하기를 원한다는 것입니다.

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

는 PHP는 echo $row['part']; 데이터베이스에 있나요 얼마나 많은 고유 한 이름

+0

나는 천천히 쓰는 definitley 다. .. :) – Marco

+0

haha ​​그 모두는 당신의 도움에 당신에게 감사한다. D – rackemup420

0

이제 충분하다.

adam 
andy 
abraham 
alfie 

당신은

a 
a 
a 
a 

SELECT distinct(name) FROM comics ORDER BY name ASC 

사용으로 끝낼 것입니다 : 당신은 당신과 같은 이름의 집합을 반환 된 경우 있도록 반환 된 결과에 문자열을하고있다 고유 한 이름을 숫자순으로 오름차순으로 반환하십시오.