PHP / Postgres Один выход на строку - PullRequest
2 голосов
/ 25 февраля 2020

Я пытаюсь получить вывод в одну строку для каждой строки, в которой повторяются мои операторы, но выводит примерно 100 раз за каждый найденный «тикет». В текущей очереди SQL есть только 4 возможных билета, которые соответствуют критериям.

$ticketIdQuery = pg_query($db, "SELECT ticket.assignee_id, ticket.subject FROM ticket INNER JOIN ticket_assignee_mapping ON ticket.assignee_id=ticket_assignee_mapping.assignee_id WHERE status_id = $firstLevelId");

if($ticketIdQuery)
{
    while ($ticketIdQueryFetch = pg_fetch_array($ticketIdQuery))
    {
        print_r($ticketIdQueryFetch);
    }
}

Можно ли ограничить вывод одним для каждой найденной строки

1 Ответ

1 голос
/ 25 февраля 2020

Когда ваши JOINed-таблицы имеют отношения «один ко многим» и вы выбираете только ограниченное количество столбцов, вы не можете понять, почему вы получаете так много результатов. Поэтому вместо того, чтобы использовать DISTINCT, я предлагаю использовать предложение GROUP BY, чтобы указать столбцы, которые вам действительно интересны. Если вы также добавите COUNT (*) в ваш SELECT, вы можете продолжать настраивать свой запрос до тех пор, пока не будет подсчитано количество записей. 1 для каждой строки возвращается. Попробуйте это:

$ticketIdQuery = pg_query($db, "SELECT ticket.assignee_id, ticket.subject, COUNT(*) FROM ticket INNER JOIN ticket_assignee_mapping ON ticket.assignee_id=ticket_assignee_mapping.assignee_id WHERE status_id = $firstLevelId GROUP BY ticket.assignee_id, ticket.subject");

Если у вас все еще есть вопросы, пожалуйста, опубликуйте определения таблиц для ticket и ticket_assignee_mapping.

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