Как объединить несколько столбцов в один, сделать их зацикленными, но разделенными на строки с дублирующимся идентификатором с PHP и OracleSQL? - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть код, но я не могу сделать его так, как я хочу, требуется, чтобы данные, которые принадлежат одному и тому же идентификатору, повторялись только в одном столбце, хотя из реальной базы данных они отделялись (другой столбец), поэтомуэто данные, которые у меня есть

number  pay_status  card_status
021998877  UNPAID  ACTIVE
021998875  NULL  NOT ACTIVE
021998875  NULL  ACTIVE

И я хочу изменить это следующим образом:

number   others 
021998877  ACTIVE 
021998877  UNPAID  
021998876  NOT ACTIVE 
021998875  ACTIVE

Теперь я просто могу получить вывод так:

021998877  ACTIVE UNPAID

и это мой код для вывода

while ($row = oci_fetch_assoc($stid)) {
        printf("<tr><td>%d</td><td>%s</td></tr>\n", $row['no'],
            $row['card_status'],$row['pay_status'] );

Я использую PHP и OracleSQL для базы данных.Пожалуйста, помогите, спасибо

1 Ответ

0 голосов
/ 21 сентября 2018

Итак, я думаю, вы говорите, что если card_status не равно NULL, выведите вторую строку.

В этом случае это будет сделано довольно просто.

while ($row = oci_fetch_assoc($stid)) {
    printf("<tr><td>%d</td><td>%s</td></tr>\n", 
                $row['no'],
                $row['pay_status'] );
    if ( $row['card_status'] != 'NULL' ) {
        printf("<tr><td>%d</td><td>%s</td></tr>\n", 
                $row['no'],
                $row['card_status'] );
    }
}

Возможно, вам придется изменить тест на NULL в зависимости от того, какое значение на самом деле содержится в наборе результатов!

Из вашего комментария это говорит о том, что у вас более 3 столбцов в строкечем вы упомянули изначально.

Чтобы сделать это для нескольких столбцов в наборе результатов, вы можете циклически перебрать столбцы в наборе результатов и распечатать результат по многим строкам в выходных данных, преобразовав NULL в строку 'NULL'.

while ($row = oci_fetch_assoc($stid)) {
    foreach ( $row as $colname => $value) {
        if ( $colname == 'no' ) {
            continue;   // ignore the key field column
        }

        $value = $value == NULL ? 'NULL : $value

        printf("<tr><td>%d</td><td>%s</td></tr>\n", 
                    $row['no'],
                    $value );
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...