|
|
|
| Здравствуйте у меня проблема такая .Не знаю как реализовать такую задачу .
Например представим работу библиотеки
Имеются две таблицы Студенты и книги(которые на руках)
Структура у таблиц такова
Студенты St
id | FIO | reiting |
+------------------------------------
| 1 | Иванов | 0.5 |
| 2 | Петров | 0.9 |
| 3 | Сидоров | 0.7 |
| 4 | Смернов | 0.3 |
| 6 | Ванечкин | 0.8 |
|
Книги Kng
idkn | Nazvanie | idstud | bral |
+------------------------------------+----------+
| 1 | Колобок | 1 | 10.04.2010
| 2 | Война и мир | 4 | 15.06.2010
| 3 | Мастер | 2 | 12.07.2009
| 4 | Снег идет | 4 | 19.06.2010
| 5 | Храбрый | 1 | 10.07.2010
| 6 | Мир и снег | 4 | 05.05.2010
| 7 | Озерко | 3 | 12.07.2010
| 8 | Утро 1945 | 1 | 19.11.2009
|
Нужно вывести таблицу всех студентов отсортированную по рейтингу и у кого есть книги на руках
вывести самую раннюю книжку которую он взял в библиотеке (поле bral)
Короче таблица должна получиться такая
id | FIO | reiting | idkn |
+------------------------------------+--------+
| 2 | Петров | 0.9 | 3
| 6 | Ванечкин | 0.8 | -
| 3 | Сидоров | 0.7 | 7
| 1 | Иванов | 0.5 | 8
| 4 | Смернов | 0.3 | 6
|
Не знаю как реализовать
select
St.id,
St.FIO,
St.reiting,
KnG.idkn
From St
LEFT JOIN Kng on ....
....
ORDER BY St.reiting ASC
|
| |
|
|
|
|
|
|
|
для: mithat
(25.07.2010 в 15:10)
| |
SELECT s.id, s.FIO, s.reiting, k.idkn, k.bral
FROM `St` s
LEFT JOIN Kng k ON s.id = k.idstud
WHERE k.bral = (
SELECT MIN( bral )
FROM Kng
WHERE idstud = s.id )
OR k.idkn IS NULL
ORDER BY s.reiting
|
Поменяйте тип поля для bral, он должен быть DATE, иначе вы не сможете вытянуть самую раннюю дату по отдельной книге. | |
|
|
|