Задачі з SQL

лютий 2015

Сontent

Оператор CASE

Завдання

Порахувати кількість рейсів перевезення вантажу, відправлення яких було з міста Миколаїв до міста Київ та кількість рейсів з міста Миколаїв за іншими напрямками з таблиці Перевезення вантажу;

Зразок таблиці Перевезення вантажу.

№ рейсуДатаВідпровленняПризначенняПеревізникВантаж
IdDateTown_fromTown_toCarrierGoods
100112-03-2005МиколаївКиївDeliverЗалізо
100212-03-2005КиївМиколаївTransAvtoПродовольчі товари
100314-03-2005ЛьвівУманьSpeedyМеблі
...................
101920-04-2005МиколаївОдесаDeliverКомпютерна техніка
102021-04-2005ЛьвівКиївSpeedyКонтейнер



Рішення завдання

SQL-запит:

SELECT flag, COUNT(*) кількість 
FROM (SELECT CASE 
             WHEN town_to ='Київ' 
             THEN 'Київ' 
             ELSE 'Інші' 
             END flag  
      FROM transportation 
      WHERE town_from='Миколаїв')X 
GROUP BY flag; 
ORDER BY flag DESC;


Об'єктно-орієнтовний стиль кодування php-частини:

<?php   
$con = new mysqli("host","user","pass","db"); $result = $con->query(" SELECT flag, COUNT(*) N_route FROM     (SELECT CASE WHEN town_to ='Київ' THEN 'Київ' ELSE 'Інші' END flag     FROM transportation     WHERE town_from='Миколаїв')X GROUP BY flag ORDER BY flag DESC; "); echo' Вантажні перевезення, що виконані з міста Миколаїв в напрямках: <br>'; echo' Напрямок : Кількість <br>'; while ($row = $result->fetch_assoc()) { echo $row['flag'].' '. $row['Кількість']. "<br>"; }; $con->close(); ?>

Результат виконання php-частини:

Вантажні перевезення, що виконані з міста Миколаїв в напрямках:
Напрямок : Кількість
Київ    6
Інші    5