2016-09-26 1 views
0

Я совершенно новый в программировании, мне нужно создать сводку моей задачи для текущего дня. У меня есть 3 таблицы, один для countries один для task и один для customersMySQL как сгенерировать сводку для текущего дня

Вот таблица Defination

CREATE TABLE `countries` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `code` varchar(2) NOT NULL DEFAULT '', 
    `name` varchar(100) NOT NULL DEFAULT '', 
    PRIMARY KEY (`id`) 
); 

CREATE TABLE `customer` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(100) NOT NULL, 
    `email` varchar(100) NOT NULL, 
    `country` int(11) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `country` (`country`) 
); 

CREATE TABLE `task` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(100) NOT NULL, 
    `date` date NOT NULL, 
    `design_type` enum('Digitize','Vector','Quote') NOT NULL DEFAULT 'Digitize', 
    `order_type` enum('New','Edit','Revision') NOT NULL DEFAULT 'New', 
    `customer_id` int(10) unsigned NOT NULL, 
    `priority` enum('High','Medium','Low') NOT NULL Default 'High', 
    `remarks` text NULL, 
    PRIMARY KEY (`id`), 
    KEY `customer_id` (`customer_id`) 
); 

теперь я должен создать резюме, как это.

--------------------------------------------------------------- 
| Country Name | New | Revision | Edit | Total Order | 
+----------------+-------+-----------+--------+---------------+ 
| Australia  | 2 | 1  | 0  | 3   | 
| Pakistan  | 4 | 0  | 2  | 6   | 
| United State | 3 | 1  | 1  | 5   | 
| United Kd  | 2 | 2  | 0  | 4   | 
+----------------+-------+-----------+--------+---------------+ 

я построили некоторые фиктивные данные sqlfiddle.com

любое предложение будет оценено. Big Thanks

+2

Теперь у вас есть данные в sqlfiddle - вам нужно сделать попытку самостоятельно решить проблему. Разбейте проблему на части - запросите таблицу задач для выполнения текущих задач, затем создайте запрос, чтобы присоединиться к другим таблицам и выберите нужные столбцы. Если вы столкнулись с проблемами, добавьте запрос в sqlfiddle и задайте конкретный вопрос. – PaulF

+0

Я действительно путаюсь, чтобы решить этот вопрос. У меня действительно нет идеи сделать этот тип запроса. можете, пожалуйста, сделать этот запрос –

+0

Как я уже сказал - сломайте проблему на мелкие кусочки. Присоединение таблиц и выбор всех результатов - это очень простой SQL-запрос, и вы должны быть в состоянии узнать, как это сделать в базовых учебниках по SQL - вам это удалось? Группирование и добавление столбцов, требующих условной суммы, немного более продвинутые, но я предлагаю вам Google, как это сделать. Вы не должны пытаться использовать StackOverflow в качестве службы написания кода - вам нужно показать, что вы сами сделали попытки и задали конкретные вопросы, почему он не работает должным образом. – PaulF

ответ

1

После некоторого поиска и поиска в Интернете я действительно не получал никакой идеи, связанной с этим сообщением. но, добавив больше усилий, я думаю, что это может быть решено совокупными функциями, и, наконец, я получаю результат желания. вот мой окончательный запрос ..

SELECT c.name, c.code, 
SUM(IF(t.order_type = 'New',1,0)) new, 
SUM(IF(t.order_type = 'Revision',1,0)) revision, 
SUM(IF(t.order_type = 'Edit',1,0)) edit 
FROM task AS t 
JOIN customer AS cus ON cus.id = t.customer_id 
JOIN countries AS c ON c.id = cus.country 
WHERE t.date = CURRENT_DATE AND t.status != 'Completed' 
GROUP BY c.id