복붙노트

[SQL] 저자에 의해 표현 엔진 SQL 쿼리 항목 목록

SQL

저자에 의해 표현 엔진 SQL 쿼리 항목 목록

어떻게 다른 저자 각 항목에 채널에서 최신 3 개 항목을 주문할 것인가? (그들은 같은 저자에 의해 3 개 최신 항목 끝나게하지 않도록) - 나는 그것을 위해 SQL 쿼리를 사용할 필요가 있다고 생각?

{exp:channel:entries orderby="screen_name|date" channel="portfolios" limit="3" group_id="5" dynamic="no"}
<img src=" {thumbnail}" alt="{title}"/><br />
{title}<br />
{/exp:channel:entries} 

사전에 감사합니다!

해결법

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

    1.마크 - 여기에 내가 다른 속는 질문에 게시 된 응답의 재 게시입니다 :

    마크 - 여기에 내가 다른 속는 질문에 게시 된 응답의 재 게시입니다 :

    항목 태그 삽입을 통해 entry_id 매개 변수를 사용 : 당신이 당신의 사용자 정의 필드 구문 분석이 필요하기 때문에 여기에 가장 좋은 방법은, 먼저 서로 다른 저자의 최신 4 개 항목의 entry_ids을 찾은 다음 채널로 사람들을 전달하는 것입니다.

    이 작업 (적절한 정수로 CHANNEL_ID를 교체해야)한다. 이와 코드의 전체 현재 덩어리를 교체합니다 :

    {embed="embeds/_latest_per_member" entry_ids="{exp:query sql="SELECT entry_id, author_id FROM exp_channel_titles WHERE entry_date IN( SELECT MAX(entry_date) FROM exp_channel_titles  WHERE status != 'closed' AND channel_id = 1 GROUP BY author_id ) ORDER BY entry_date DESC LIMIT 4" backspace="1"}{entry_id}|{/exp:query}"}
    

    그런 다음 퍼가기 / _latest_per_member 템플릿은 다음과 같이 볼 수 있습니다 :

    {exp:channel:entries channel="channel_name" entry_id="{embed:entry_ids}"}
        {author_id}<br />
        <a href="{path=portfolios/gallery/{username}}"><img src="{thumbnail}"></a><br>
        <a href="{path=portfolios/gallery/{username}}">{title}</a><br />
    {/exp:channel:entries}
    

    이 코드는 당신에게 재귀 오류를 준 당신은 언급했다 - 당신이 삽입 내에 삽입에 다른 통화를 보류 한 것을 의미한다. 그렇게하지 마십시오.

  2. ==============================

    2.WHERE IN (SELECT MAX (ENTRY_DATE) ...) 예를 들어 데이터베이스에 큰 타격을 받았다. 본질적으로 각 항목에 대해 하위 쿼리를 할 것으로 보인다. 제가 발견 대안 (유래)는 일부에서 단지 하나의 서브 쿼리를 사용

    WHERE IN (SELECT MAX (ENTRY_DATE) ...) 예를 들어 데이터베이스에 큰 타격을 받았다. 본질적으로 각 항목에 대해 하위 쿼리를 할 것으로 보인다. 제가 발견 대안 (유래)는 일부에서 단지 하나의 서브 쿼리를 사용

    인용 : 그룹 BY :-)하여 쿼리를 감싸서하여 ORDER BY는 그룹 작업을 수행합니다.

    어쨌든 ...이 모든 저자와 마지막 게시 된 항목 제목을 가져옵니다. 당신은 또한 url_title을 원하는 경우에, 당신은 두 SELECT 문에 추가해야합니다. 나는 몇 가지 추가 옵션, 8 CHANNEL_ID 제한 마지막 4 개월 만 가져 오기 및 제한 68 CATEGORY_ID에 포함 시켰습니다.

    SELECT author_id, screen_name, title, FROM_UNIXTIME(entry_date) AS m_date 
    FROM (
      SELECT t.author_id, t.title, m.screen_name, t.entry_date
      FROM exp_channel_titles AS t
      LEFT JOIN exp_members AS m ON t.author_id = m.member_id
      LEFT JOIN exp_category_posts AS c ON c.entry_id = t.entry_id
      WHERE t.entry_date > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 4 MONTH)) 
      AND t.channel_id = 8
      AND c.cat_id = 68
      ORDER BY t.entry_date DESC
    ) AS S 
    GROUP BY S.author_id
    ORDER BY entry_date DESC
    # LIMIT 10
    
  3. from https://stackoverflow.com/questions/7047022/expression-engine-sql-query-entries-list-by-authors by cc-by-sa and MIT license