Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Обьдененение двух запросов


Автор: MrDmitry 28.7.2011, 20:47
Извините долго думал где создать тему. В итоге выбрал этот раздел. 
Есть два запроса

Код

SELECT 
                    SUM(o.amount) AS `total_amount`, 
                    SUM(oa1.amount) AS `cash`,
                    SUM(oa2.amount) AS `bonus_on`, 
                    SUM(oa4.amount) AS `bonus_off`, 
                    SUM(oa3.amount) AS `discount`, 
                    COUNT(DISTINCT o.id) AS `operation_count`, 
                    DATE_FORMAT(o.date,'%d.%m.%Y') AS `dat`,
                    DATE_FORMAT(o.date, '%y.%m.%d') AS `date_format`, 
                    DATE_FORMAT(o.date, '%d.%m.%Y') AS `date_format_rev` 
                        FROM `operation` AS `o` IN
                 LEFT JOIN `operation_action` AS `oa1` ON oa1.operation_id=o.id AND oa1.type=4
                 LEFT JOIN `operation_action` AS `oa2` ON oa2.operation_id=o.id AND oa2.type=1
                 LEFT JOIN `operation_action` AS `oa4` ON oa4.operation_id=o.id AND oa4.type=2
                 LEFT JOIN `operation_action` AS `oa3` ON oa3.operation_id=o.id AND oa3.type=3 
                
                WHERE (o.brand_id=11) AND (DATE(o.date) >= '2011.07.01' AND DATE(o.date) <='2011.07.28' )
                GROUP BY `date_format` 
                ORDER BY `date_format` ASC;


SELECT 
                    COUNT(c.id) AS `cards_count`,
                    DATE_FORMAT(c.date, '%y.%m.%d') AS `date_format`
                FROM 
                    `card` AS `c`
                WHERE 
                    c.group_id=11
                AND 
                    DATE(c.date) >='2011.07.01' 
                AND 
                    DATE(c.date) <='2011.07.28';


Нужно объеденить оба этих запроса в 1 sql запрос.  Или занести результат обоих запросов в один массив php.

Извиняюсь если для моего вопроса был более подходящий раздел

Автор: Akina 28.7.2011, 21:55
Цитата(MrDmitry @  28.7.2011,  21:47 Найти цитируемый пост)
Нужно объеденить оба этих запроса в 1 sql запрос. 

Поскольку в запросах различается как количество полей, так и количество записей, объединение их не имеет смысла. Читай - невозможно.

Цитата(MrDmitry @  28.7.2011,  21:47 Найти цитируемый пост)
Или занести результат обоих запросов в один массив php.

Тебе в ПХП...

Автор: MrDmitry 28.7.2011, 22:12
Ну а можно как то переделать? Например чтоб кол-во записей совпадало. Если за какую то дату в 1 запросе есть записи а во втором нет то во втором запросе NULL

Автор: Akina 28.7.2011, 23:09
MySQL не поддерживает FULL JOIN.

Автор: MrDmitry 29.7.2011, 15:37
Плохо. Но все равно спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)