나는 쿼리하는 테이블이 두 개 있습니다. 한 테이블에는 사진에 등장하는 플레이어가 죽었는지, 명예의 전당에 있는지 등을 나타내는 필드가 있습니다. 방금 추가 한 필드는 "new_flag"입니다. 이 사진은, 그 결과이 같은 BY 그룹과MySQL 도움말 선택; 서브 쿼리?
name firstname lastname hall_of_fame deceased new_flag
---- --------- -------- ------------ -------- --------
EARL AVERILL SR EARL AVERILL SR Y Y Y
BILL TERRY BILL TERRY Y Y N
BILL TERRY BILL TERRY Y Y Y
BILL TERRY BILL TERRY Y Y N
BOBBY DOERR BOBBY DOERR Y N N
BOBBY DOERR BOBBY DOERR Y N N
(일부 팀은 이상의 제품/사진을 참고)를 볼 것 GROUP BY없이 내 인벤토리
새로운 여부를 나타냅니다 내 쿼리는 이렇게 보이지만 각 플레이어는 둘 이상의 레코드를 가질 수 있기 때문에 항상 새로운 플래그를 찾을 수있는 것은 아닙니다.
SELECT CONCAT(a.firstname,' ',a.lastname) AS name,
a.firstname,
a.lastname,
b.hall_of_fame,
b.deceased,
b.new_flag
FROM vm_product_name AS a,
vm_product_new_attribute AS b
WHERE b.hall_of_fame ='Y'
AND a.product_id = b.product_id
GROUP BY CONCAT(a.firstname,' ',a.lastname)
ORDER BY a.lastname,
a.firstname;
문제는 내가 또한 그들이 적어도이있는 경우 플레이어의 이름 옆에 "새로운"아이콘을 추가 할 ..... 난 단지 각 플레이어가 내 웹 페이지에 한 번에 표시 할 것입니다 만, 새 사진 1 장. 내가 어떻게 할 수있는 아이디어?
이것이 최선의 방법은 아니지만 Joomla/Virtumart 확장 기능으로 제작되었으며 현재 데이터베이스 구조를 변경할 수 없습니다. 당신이 왼쪽을 할 수 있습니다
... 대신 가입 그래서 "단지 사용, GROUP BY 절에서 CONCAT를 사용하지 않는 GROUP BY a.firstname, a.lastname ". GROUP BY (WHERE와 ORDER BY뿐만 아니라) 함수를 사용하는 것을 피하는 주된 이유는 MySQL이 인덱스를 사용하지 못하게하고 쿼리가 상당히 느려지는 임시 테이블을 생성 할 수 있기 때문입니다. –