Как выбрать имя и посчитать, сколько раз имя повторяется в одном запросе с LEFT JOIN - PullRequest
1 голос
/ 24 марта 2020

Я пытаюсь составить отчет для счета-фактуры, и я собираюсь вывести название прибыли, затем посчитать, сколько раз повторяется, и показать цену за единицу, а итоговый результат должен выглядеть примерно так

 Name      Quantity       Unit Price      Total

 Rent      2                $ 120         $ 240

 Ремонт    1                $ 350         $ 350

Текущий запрос

SELECT p.profitout_price,  p.description, pd.name
    FROM profit_out p
    LEFT JOIN profit_description pd ON (p.profitout_id = pd.id)

Результат

Array
(
[0] => Array
    (
        [profitout_price] => 150
        [description] => Дюзи
        [name] => Ремонт
    )

[1] => Array
    (
        [profitout_price] => 120
        [description] => 
        [name] => Rent
    )

[2] => Array
    (
        [profitout_price] => 120
        [description] => 
        [name] => Rent
    )

)

что я пытался сделать это добавить COUNT к pd.name, как это

SELECT p.profitout_price,  p.description, pd.name, COUNT(pd.name) AS count

, но результат неверен и становится как это

Array
(
[0] => Array
    (
        [profitout_price] => 120
        [count] => 3
        [description] => 
        [name] => Rent
    )

)

Как получить правильный результат?

1 Ответ

1 голос
/ 24 марта 2020

Вы можете использовать следующее решение, используя GROUP BY с MIN и SUM:

SELECT
  pd.name AS `Name`,
  COUNT(pd.id) AS `Quantity`,
  MIN(p.profitout_price) AS `Unit Price`,
  SUM(p.profitout_price) AS `Total`
FROM profit_out p LEFT JOIN profit_description pd ON p.profitout_id = pd.id
GROUP BY pd.name

Вам необходимо GROUP BY название прибыли. Вы можете использовать COUNT для получения количества и SUM для получения суммы.

Примечание: Если вам не нужно описание прибыли, вы можете удалить LEFT JOIN.

...