2009-12-09 5 views
1

는이 코드 내 질문에 내가 구매자의 열이 쉼표 (,)로 구분 될 수 있도록하는 방법이다MySQL의 쿼리 : 최적의 쿼리는

Click to View output

의 출력을 제공

SELECT DISTINCT idx_campus_bookinfo,c.userid as Buyer,bookname,book_explain,writedate 
FROM campus_bookinfo cb 
LEFT JOIN user_books ub ON idx_campus_bookinfo = id_product 
LEFT JOIN customer c ON ub.id_customer = c.id_customer 
where cb.idx_campus = 1 and cb.idxuser = 29 ORDER BY writedate DESC 

이 같은 책.

답변

3

GROUP_CONCAT 기능을 사용하지만 BY 그룹과 DISTINCT 대체하는 것을 의미한다 : i는 사용자 ID를 정렬 할 수 있습니다,

SELECT idx_campus_bookinfo, 
      GROUP_CONCAT(c.userid SEPARATOR ',') as Buyer, 
      bookname, 
      book_explain, 
      writedate 
     FROM campus_bookinfo cb 
LEFT JOIN user_books ub ON idx_campus_bookinfo = id_product 
LEFT JOIN customer c ON ub.id_customer = c.id_customer 
    WHERE cb.idx_campus = 1 
     AND cb.idxuser = 29 
GROUP BY idx_campus_bookinfo, bookname, book_explain, writedate 
ORDER BY writedate DESC 

속행 질문을?

예, 할 수 있습니다

SELECT idx_campus_bookinfo, 
      GROUP_CONCAT(c.userid ORDER BY c.userid ASC SEPARATOR ',') as Buyer, 
      bookname, 
      book_explain, 
      writedate 
     FROM campus_bookinfo cb 
LEFT JOIN user_books ub ON idx_campus_bookinfo = id_product 
LEFT JOIN customer c ON ub.id_customer = c.id_customer 
    WHERE cb.idx_campus = 1 
     AND cb.idxuser = 29 
GROUP BY idx_campus_bookinfo, bookname, book_explain, writedate 
ORDER BY writedate DESC 
+0

... 당신이 그것에 나를 이길 것) –

+0

좋은 하나 개의 마스터가 ..이 내가해야 할 것입니다 .. 덕분에 무리 – Treby

+0

속행 질문, 내가 사용자 ID를 정렬 할 수 있습니다? – Treby

2

GROUP_CONCAT는 사용자 ID를 가지고 그들을 연결합니다. 이것을 시험해보십시오.

SELECT idx_campus_bookinfo, 
     GROUP_CONCAT(c.userid) as Buyer, bookname, book_explain, writedate 
FROM campus_bookinfo cb 
LEFT JOIN user_books ub ON idx_campus_bookinfo = id_product 
LEFT JOIN customer c ON ub.id_customer = c.id_customer 
WHERE cb.idx_campus = 1 and cb.idxuser = 29 
GROUP BY idx_campus_bookinfo 
ORDER BY writedate DESC 
+0

'GROUP BY'는 MySQL에서 지원하지만, OP의 쿼리와 동일하지 않습니다. –

+0

나는 당신의 코드를 좋아합니다. , coz 그것의 매우 짧은,하지만 첫 번째 오른쪽, 첫 번째 봉사 .. 어쨌든 여기에서 당신에게 두 가지 희망을 다시 ... – Treby