복붙노트

[SQL] SQLite는의 GROUP_CONCAT

SQL

SQLite는의 GROUP_CONCAT

이 같은 데이터를 데

1 A
1 B
1 C
1 D
2 E
2 F
3 G
3 H
3 I
3 J
3 K

이 쿼리를 사용하여

select ABSTRACTS_ITEM._id,Name 
from ABSTRACTS_ITEM , ABSTRACT_AUTHOR , AUTHORS_ABSTRACT
where
ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID
and
ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID

지금, 나는이 같은 데이터를 표시 할

1 A,B,C,D
2 EF

on..I도 알 수 있도록 그것은 GROUP_CONCAT 함수에 의해 달성 할 수있다. 그래서, 나는이 함께 노력

SELECT ABSTRACTS_ITEM._id,
GROUP_CONCAT(ABSTRACT_AUTHOR.NAME) FROM
(select ABSTRACTS_ITEM._id,
Name
from
ABSTRACTS_ITEM , ABSTRACT_AUTHOR , AUTHORS_ABSTRACT
where
ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID
and
ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID)

그러나, 그것은 나를 오류가 표시됩니다. 그래서, 내가 여기 잘못 뭐하는 거지. 그것을 달성 할 수있는 권리 절차는 무엇입니까?

해결법

  1. ==============================

    1.당신은 당신이 집계 함수를 사용하는 경우 GROUP BY 절을 추가해야합니다. 또한 사용하는 테이블을 조인 가입하세요.

    당신은 당신이 집계 함수를 사용하는 경우 GROUP BY 절을 추가해야합니다. 또한 사용하는 테이블을 조인 가입하세요.

    그래서이 시도 :

    SELECT AI._id, GROUP_CONCAT(Name) AS GroupedName
      FROM ABSTRACTS_ITEM AI 
      JOIN AUTHORS_ABSTRACT AAB ON AI.ID = AAB.ABSTRACTSITEM_ID
      JOIN ABSTRACT_AUTHOR AAU ON AAU._id = AAB.ABSTRACTAUTHOR_ID
     GROUP BY tbl._id;
    

    당신이하려고했던 어떤 거의 정확했다. 당신은 마지막에 GROUP BY 절을 추가 할 필요가 있었다. 그러나 첫 번째 낫다.

    SELECT ID,
    GROUP_CONCAT(NAME) 
    FROM
        (select ABSTRACTS_ITEM._id AS ID,
         Name
         from
        ABSTRACTS_ITEM , ABSTRACT_AUTHOR , AUTHORS_ABSTRACT
        where
        ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID
        and
        ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID)
    GROUP BY ID;
    
  2. from https://stackoverflow.com/questions/18778844/group-concat-in-sqlite by cc-by-sa and MIT license