Intereting Posts
Конфигурация nginx для API RESTful Переменные $ _POST не работают с $ _FILES и multipart / form-data Stop bot быстро отправляет несколько запросов. PHP + AJAX Неверные изображения, регулярные выражения imap не подключается к почтовому серверу с живого сервера, но отлично работает с localhost Codeigniter: фатальная ошибка возникает при использовании функции base_url () для определения константы в файле "application / config / constants.php" Как получить строку запроса URL-адреса (части после вопросительного знака)? Копирование и вставка стилей из одной строки в другую Как переименовать столбец в laravel с помощью миграции? Мыло Jira с Php Изменение объектов в returnCallback () PHPUnit Mocks Как запросить базу данных с помощью javascript? Есть ли способ получить long / lat для заданного адреса в Картах Google только с PHP? Справка по этому сообщению об ошибке> неожиданный T_OBJECT_OPERATOR Создание 5-звездной рейтинговой системы с PHP, MySQL, JQuery и Ajax

Возвращает NULL вместо повторного значения в определенных столбцах

Мой запрос должен допускать повторные значения в определенных столбцах, но я хочу, чтобы он возвращал значение null в запрос при повторном значении.

Следующие два изображения показывают мою проблему:

Что теперь возвращается

введите описание изображения здесь

Что я хочу, чтобы он вернулся:

введите описание изображения здесь

SQL-запрос:

SELECT * FROM completo_sem_saldo AS a LEFT JOIN posicao_contabil AS b ON (a.Cliente = b.Cliente_Posicao) LEFT JOIN saldo_analitico AS c ON (a.Cliente = c.Cliente_Saldo_Analitico) LEFT JOIN titulos_em_ser AS d ON (a.Cliente = d.Cliente_Titulos_Em_Ser) 

Вы можете сделать это на PHP с помощью функции, которая выполняет проверку повторения и возвращает «», когда это повторение:

 function blankIfRepeat($result, $key, &$map) { if (isset($map[$key]) && $map[$key] == $result[$key]) { return ""; // it is the same value we encountered last time } $map[$key] = $result[$key]; return $result[$key]; } 

Обратите внимание на параметр & перед последним параметром, чтобы убедиться, что вызывающий абонент получает изменения, внесенные в этот аргумент.

Вы используете его следующим образом:

 $map = array(); // initialise the variable used to track repetitions while($resul1 = mysqli_fetch_assoc($query1)) { $nome = $resul1['Nome']; // call the function for the fields that need blanks for repeated values: $sld_dev_ctbl = blankIfRepeat($resul1, 'Sld_dev_ctbl', $map); $saldo = blankIfRepeat($resul1, 'Saldo', $map); $vlr_atual = $resul1['Vlr_atual']; $tabela .= '<tr>'; $tabela .= '<td>'.$nome.'</td>'; $tabela .= '<td>'.$sld_dev_ctbl.'</td>'; $tabela .= '<td>'.$saldo.'</td>'; $tabela .= '<td>'.$vlr_atual.'</td>'; $tabela .= '</tr>'; } $tabela .= '</table>'; 

ИСПОЛЬЗУЙТЕ переменные, чтобы отображать только первую строку.

Значение по умолчанию для CASE равно null, поэтому я не включил ELSE

Это предполагает, что нет отрицательного сальдо, поэтому начальное значение равно -1

 SELECT CASE WHEN rn = 1 THEN Sld_dev_ctbl END as Sld_dev_ctbl, CASE WHEN rn = 1 THEN Saldo END as Saldo Vlr_actual, FROM ( SELECT *, (@rownum := if( @saldo = Saldo, @rownum + 1, -- increase the counter if (@saldo := Saldo, 0, -- reset the counter for next block 0 ) ) ) as rn FROM completo_sem_saldo AS a LEFT JOIN posicao_contabil AS b ON (a.Cliente = b.Cliente_Posicao) LEFT JOIN saldo_analitico AS c ON (a.Cliente = c.Cliente_Saldo_Analitico) LEFT JOIN titulos_em_ser AS d ON (a.Cliente = d.Cliente_Titulos_Em_Ser) CROSS JOIN (select @rownum := 0, @saldo := -1) params ORDER BY --<provide some field to choose which one will be first> ) T