Подзапрос вернул более одного значения - множественное сообщение об ошибке

Добавьте этот код после отправки сообщения и до получения сообщения с сервера

recyclerView.scrollToPosition(mChatList.size() - 1);
0
задан hamza.soufiane 4 March 2019 в 12:25
поделиться

1 ответ

Ваш код может использовать небольшое переформатирование, чтобы улучшить читаемость. Вы, скорее всего, получите качественный ответ, если люди смогут быстро и легко усвоить ваш вопрос и ваш код. Кроме того, у вас были дополнительные открытые скобки в предложении WHERE для внешнего запроса.

При использовании подзапроса вы должны избегать использования тех же псевдонимов таблиц, что и внешний запрос. Используйте уникальные псевдонимы.

Проблема, с которой вы столкнулись, вызвана тем, что у вас есть подзапрос, производящий столбец VENDEUR X. Чтобы подзапрос работал, он должен возвращать только одну строку при выполнении. В вашем случае он возвращает несколько строк, которые выдают сообщение об ошибке.

Для устранения проблемы запустите подзапрос независимо и проверьте возвращаемые данные. Вы группируете по столбцу ET2.ET_LIBELLE, который имеет несколько значений. Исходя из того, что, я полагаю, вы пытаетесь сделать, вы должны добавить ET2.ET_LIBELLE в предложение WHERE. Смотрите мой пример ниже.

SELECT 
    [MAGASIN] = ET2.ET_LIBELLE,
    [CA]= SUM(GL_MONTANTTTC),
    [NBR TICKET] = COUNT(DISTINCT GL_NUMERO),
    (
        SELECT [NBR TICKET] = COUNT(DISTINCT GL_NUMERO) 
        FROM 
            GCLIGNEARTDIM 
            LEFT OUTER JOIN ETABLISS ETI ON GL_ETABLISSEMENT=ETI.ET_ETABLISSEMENT 
            LEFT OUTER JOIN COMMERCIAL GCLI ON GL_REPRESENTANT=GCLI.GCL_COMMERCIAL 
        WHERE 
            (
                GL_DATEPIECE >= '20190228 00:00:00' 
                AND GL_DATEPIECE < '20190301 00:00:00' 
                AND (GCL3.GCL_LIBELLE='vendeur x')
            )
            AND GL_ETABLISSEMENT IN ('W01','W05','F10')
            AND ETI.ET_LIBELLE = ET2.ET_LIBELLE
    ) AS 'VENDEUR X'
FROM 
    GCLIGNEARTDIM 
    LEFT OUTER JOIN ETABLISS ET2 ON GL_ETABLISSEMENT=ET2.ET_ETABLISSEMENT  
    LEFT OUTER JOIN COMMERCIAL GCL3 ON GL_REPRESENTANT=GCL3.GCL_COMMERCIAL
WHERE 
    GL_DATEPIECE >= '20190228 00:00:00' 
    AND GL_DATEPIECE < '20190301 00:00:00' 
    AND GL_ETABLISSEMENT IN ('W01','W05','F10')
GROUP BY
    ET2.ET_LIBELLE
ORDER BY
    ET2.ET_LIBELLE
0
ответ дан Chris Albert 4 March 2019 в 12:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: