2014-07-09 4 views
0

목록 안에는 항목이 있습니다. shop. Shop에는 동일한 ID가 있지만 다른 group_id가 있습니다. 기본 키는 shop_id, group_id입니다.GROUP BY/HAVING CLAUSE Sqlite에서 실패

처음으로 목록을 표시 할 때 해당 그룹을 그룹화하려고합니다 (동일한 상점이므로) 다음 화면에서.

그래서, 내 질문은 다음과 같습니다

SELECT * FROM TABLE_SHOP GROUP BY ID 

하지만, 나는 그것을 처리 할 때, 나는 필드 상점을 분리 할 필요가 나는하는 경우에 = 0/1

= 1 "완료" 요소를 비활성화합니다. 하나이 완료되면

SELECT * FROM TABLE_SHOP GROUP BY ID HAVING DONE =0 

그러나이, 가게가 목록에 더 이상 나타나지 않습니다

나는 조항을 추가했습니다. (하나는 사용 중지되고 하나는 사용 가능으로 표시되는 대신)

목록에서 무엇이 실패했는지 알 수 있습니까?

편집 : 나는 필드를 변경

table

은 그림과 일치하는 이름을 지정합니다. 이 경우 목록을 표시하고 싶습니다. 내가 처음 표시 할 때 (0으로 완료된 모든 필드), 상점 25975 (2 레코드)가 한 번 나타납니다. (이유는 GROUP BY를 사용했기 때문입니다)

그런 다음 상점을 처리하면 업데이트됩니다. 그의 완료 필드를 1로 설정합니다.

그래서이 순간에는 2 행을 더 이상 그룹화하지 않아도됩니다. 그것은 그것 명확하다 ???

답변

0

나는 그것을 얻었습니다.

쿼리이었다

SELECT * FROM TABLE_TIENDA WHERE TIENDA_DONE = 0 GROUP BY TIENDA_ID, DONE 

Tx는 당신의 도움이

0

HAVING 절의 목적은 집계 함수를 사용하여 필터링하는 것입니다. 대신 다음을 시도하십시오 : SELECT * FROM TABLE_TIENDA WHERE TIENDA_DONE = 0 GROUP BY TIENDA_ID

+0

위한 그러나 여기, 내가, 목록에 보관해야 TIENDA_DONE = 1이 가게를 볼 수 없습니다 나는 할 수 있도록 그것을 비활성화하십시오 –

+0

그래서, 모든 상점을 보이기를 원하십니까? 그렇다면 "상점을 분리"한다는 것은 무엇을 의미합니까? '완료'된 상점을 '실행 취소'에서 분리하려는 경우 모든 "완료된"상점은 목록의 맨 위에 있으므로 ORDER BY 절을 사용할 수 있습니다. SELECT * FROM TABLE_TIENDA ORDER BY TIENDA_DONE, TIENDA_ID, GROUP_ID. –

+0

둘 다 tienda_done = 0 일 때 먼저 그룹화하려고합니다. –