Функция SQL MIN с предложением where - PullRequest
7 голосов
/ 08 марта 2012

Это моя таблица проекта

 Project Table
JNo Name    City
J1  Proj1   London
J2  Proj2   Paris
J3  Proj3   Athens
J4  Proj4   India

А это мой стол отгрузки

Shipment
SNo PNo JNo Qty
S1  P1  J1  50
S1  P1  J2  90
S1  P2  J1  40
S1  P3  J3  20
S2  P1  J3  110
S2  P2  J2  30
S2  P4  J3  10
S2  P3  J1  100
S3  P1  J3  80
S3  P4  J2  70
S3  P4  J2  70
S4  P1  J3  20
S4  P2  J1  60

Я хочу назвать проект, в котором указано минимальное количество.

Я пытался. Но его возвращают только минимальное кол-во это мой код

select min(qty) from shipment where jno IN(select jno from project)

Ответы [ 5 ]

10 голосов
/ 08 марта 2012
SELECT p.name 
FROM Project p, Shipment s
WHERE s.JNo = p.JNo
  AND s.Qty in (SELECT MIN(qty) FROM shipment)
4 голосов
/ 08 марта 2012

Без использования MIN:


    SELECT p.Name, s.Qty
    FROM `project` p
    INNER JOIN `shipment` s ON `p`.`jno` = `s`.`jno`
    ORDER BY `s`.`qty` ASC
    LIMIT 1

3 голосов
/ 08 марта 2012

Это должно работать, как вы говорите

select p.Name, s.Qty 
from Project p, Shipment s
where p.Jno=s.Jno
and s.Qty in(select min(s.Qty) from Shipment s);

будет отображать имя проекта из таблицы Project и минимальное кол-во из таблицы shipment.

1 голос
/ 08 марта 2012

Запрос, который вы должны использовать:

SELECT project.Name, min(qty) FROM Project 
LEFT JOIN Shipment ON project.JNO = Shipment.JNO

Я надеюсь, что это поможет вам.

0 голосов
/ 08 марта 2012

Для проекта с наименьшей отгрузкой попробуйте:

select p.name
from project p
join shipment s on p.jno=s.jno
order by s.qty
limit 1

Для проекта с наименьшим общим количеством отправленного груза попробуйте:

select name from
(select p.name, sum(s.qty) total_shipped
 from project p
 join shipment s on p.jno=s.jno
 group by p.name
 order by 2) sq
limit 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...