Как сформировать SQL запрос из двух таблиц

247
18 октября 2017, 07:38

Ребята, помогите максимально лаконично сформировать SQL запрос к БД для вывода информации.

Есть 2 таблицы, partners и cupons

Таблица partners содержит имена партнеров в поле name. Структура таблицы такова: id; name;

Таблица cupons содержит информацию о купонах, проданных по каждому из партнеров. Структура таблицы такова: id; idpartner; summa; date;

Мне необходимо вывести на экран таблицу такого вида:

Имя партнера; количество купонов, общая сумма

Таблица должна быть сгруппирована по имени партнера.

Резюмируя, мне необходимо вывести 1 раз имя партнера и посчитать для него количество проданных купонов и общую сумму для него, за определенный период date.

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

Как сформировать циклы и запросы для вывода такой таблицы?

Answer 1

Берешь и выводишь:

$sql = "SELECT `p`.`name`, COUNT(1) as `cnt`, SUM(`c`.`summa`) as `summ`
FROM `partners` `p`
INNER JOIN `cupons` `c` ON `p`.`id` = `c`.`idpartner`
WHERE `c`.`date` BETWEEN ? AND ?;";

Рекомендую ознакомиться. Они там все одинаковые, можете выбрать на любой цвет.

Далее исполняем запрос и выводим в цикле:

$pdo = new PDO(/*данные для коннекта*/);
$stmt = $pdo->prepare($sql);
$stmt->execute([$date1,$date2]);
while ($stmt->fetch(PDO::FETCH_ASSOC) as $row) {
    print $row['name'] . "\t";
    print $row['cnt'] . "\t";
    print $row['summ'] . "\n";
}
READ ALSO
Тайный санта PHP

Тайный санта PHP

ЗдравствуйтеЕсть задание сделать "Тайного санту"

236
Помогите с регуляркой в PHP

Помогите с регуляркой в PHP

В корне сайта есть каталог/temp/с лог файлами по заявкам

149
Нужно очистить файл txt каждые 10 часов [дубликат]

Нужно очистить файл txt каждые 10 часов [дубликат]

Данный вопрос уже был задан и имеет решение:

159
php7 и вывод данных помогите разобраться

php7 и вывод данных помогите разобраться

Добрый день! Делаю некотрые переделки в сайте и не могу разобраться с выводом и работой такого дела как:

163