У меня есть следующая таблица:
-----------------------------------------
id | advid | chq_num | chq_date | amount
-----------------------------------------
1 | 102 | 121212 | 2015-01-01 | 10000
-----------------------------------------
2 | 102 | 121213 | 2015-01-02 | 8000
-----------------------------------------
3 | 103 | 121214 | 2015-01-03 | 9000
-----------------------------------------
4 | 102 | 121215 | 2015-01-04 | 10000
-----------------------------------------
5 | 103 | 121216 | 2015-01-05 | 7000
-----------------------------------------
Теперь я хочу показать следующую информацию:
Advance ID: 102 Advance Amount: 28000
Cheque Num: 121212, 121213, 121215 Cheque Date: 2015-01-01, 2015-01-02, 2015-01-04
Для этого я использовал следующий запрос и код:
SELECT advid, sum(amount), chq_num, chq_date FROM my_table GROUP BY advid
после выполнения запроса из php при попытке получить результат:
$row = mysql_fetch_assoc($query);
echo 'Advance ID:'.$row['advid'].' Advance Amount: '.$row['amount'].'<br />;
echo 'Cheque Num: '.$row['chq_num'].' Cheque Date: '.$row['chq_date']
Но с помощью описанной выше техники извлечения я могу получить только первый «Check Num» и первый «Check Date». Как получить таким образом, чтобы я мог получить весь контрольный номер и контрольную дату, разделенную символом ‘,’ (запятая)?
С уважением
Ты можешь использовать GROUP_CONCAT функция для этого
SELECT
advid,
sum(amount) as amount,
group_concat(chq_num) as chq_num,
group_concat(chq_date) as chq_date
FROM my_table GROUP BY advid
chq_num
а также chq_date
будет возвращен через запятую
Вы можете использовать агрегатные функции, такие как sum
а также group_concat
для вашего желаемого результата.
SELECT advid
, sum(amount) as advance_amount
, group_concat(chq_num) as cheque_numbers
, group_concat(chq_date) as cheque_dates
FROM my_table
GROUP BY advid
Ссылаться на:
SELECT advid,
group_concat(chq_num),
sum(amount),
group_concat(chq_date)
FROM my_table
GROUP BY advid