Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];

Вниз

знатокам SQL   Найти похожие ветки 

 
VirEx ©   (2008-08-02 18:08) [0]

есть справочник:
Одежда (код, наименование)

и три таблицы:
Сотрудник (код, ФИО)
Выдано_одежды (код_сотрудника, код_одежды)
Возвращено_одежды (код_сотрудника, код_одежды)

необходимо вывести таблицу списка одежды у конкретного сотрудника в данный момент

допустим было три записи:
иванову выдана пара валенок
иванову выдали шапку ушанку
у иванова изъяли пару валенок
выводится таблица о том что у иванова есть только шапка ушанка

подскажите решение, т.е. код SQL и вобще возможно ли такое (Access)


 
Anatoly Podgoretsky ©   (2008-08-02 18:15) [1]

> VirEx  (02.08.2008 18:08:00)  [0]

Шутник, ты у кого учился?


 
Zeqfreed ©   (2008-08-02 18:20) [2]

Самый очевидный вариант это вложенный запрос :)
select * from given where cid not in (select cid from taken WHERE eid = 0);


 
Сергей М. ©   (2008-08-02 18:23) [3]


> возможно ли такое


Возможно.
Но структура твоей базы для этого не годится - ее надо выкинуть в топку и разработать с нуля.


 
easy ©   (2008-08-02 18:48) [4]

SELECT Сотрудник.ФИО, Одежда.наименование
FROM (Выдано_одежды INNER JOIN Сотрудник ON Выдано_одежды.код_сотрудника = Сотрудник.Код)
INNER JOIN Одежда ON Выдано_одежды.код_одежды = Одежда.Код
WHERE
Одежда.Код NOT IN (SELECT Возвращено_одежды.код_одежды FROM Возвращено_одежды WHERE Возвращено_одежды.код_сотрудника = Сотрудник.Код);


 
tesseract ©   (2008-08-02 18:53) [5]


> необходимо вывести таблицу списка одежды у конкретного сотрудника
> в данный момент


Мдя, у меня задачи - степень износа посчитать, амортизацию и прогнозировать затраны на форменку с учётом налогов.


 
Сергей М. ©   (2008-08-02 18:55) [6]


> easy ©   (02.08.08 18:48) [4]


Не получится)

Каптёр сядет за недостачу, если обнаружится, что з/к Иванову было выдано две ушанки, а фактически возвращена одна - отчет по движению ушанок при этом будет девственно чист)


 
easy ©   (2008-08-02 19:06) [7]

нафиг иванову 2 ушанки? о_о


 
easy ©   (2008-08-02 19:07) [8]

нормально всё. все ушанки наместе..


 
Сергей М. ©   (2008-08-02 19:09) [9]


> easy ©   (02.08.08 19:06) [7]


Иванову не знаю, а вот каптёру сгодится, лишь бы по отчетности все было чики-пики на момент проверки)


 
Anatoly Podgoretsky ©   (2008-08-02 19:10) [10]

> easy  (02.08.2008 19:06:07)  [7]

Так у обычного человека уха два


 
Сергей М. ©   (2008-08-02 19:15) [11]


> все ушанки наместе.


Ну где же на месте ?


> Одежда.Код NOT IN (SELECT Возвращено_одежды.код_одежды FROM
> Возвращено_одежды WHERE Возвращено_одежды.код_сотрудника
> = Сотрудник.Код);


Читаем это условие по-простонародному: в случае если код одежды, фигурирующий в списке выданной, не фигурирует в списке возвращенной.

Выдано две ушанки, возвращена одна - в обеих таблицах код ушанки, пришпиленный к Иванову, фигурирует. Условие не соблюдается, значит НД пуст.


 
easy ©   (2008-08-02 19:18) [12]


> Сергей М. © (02.08.08 19:15) [11]

хм..


 
easy ©   (2008-08-02 19:19) [13]

тогда на ушанках надо проставить инвентарный номер


 
Simpson ©   (2008-08-02 19:24) [14]

easy ©   (02.08.08 19:19) [13]
И GPS датчики, и можно начинать охоту на лис))


 
easy ©   (2008-08-02 19:36) [15]


> И GPS датчики

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


 
VirEx ©   (2008-08-02 20:00) [16]


> [2] Zeqfreed ©   (02.08.08 18:20)
> Самый очевидный вариант это вложенный запрос :)
> select * from given where cid not in (select cid from taken
> WHERE eid = 0);

а можно расшифровать cid eid?


 
Правильный$Вася   (2008-08-02 20:12) [17]

нет дат совершения операций, без этого можно навыдавать много, вернуть одну - и остальные присвоить, как уже говорилось


 
palva ©   (2008-08-02 20:35) [18]

При возврате шапки должен срабатывать триггер, который проверяет, что есть, что возвращать.


 
blackman ©   (2008-08-02 21:02) [19]

palva ©   (02.08.08 20:35) [18]
А при получении, что есть на что одевать?


 
Johnmen ©   (2008-08-02 21:15) [20]


> palva ©   (02.08.08 20:35) [18]
> При возврате шапки должен срабатывать триггер,

Тетя Клава надежнее. В плане срабатываний...


 
Сергей М. ©   (2008-08-02 21:54) [21]


> Тетя Клава надежнее. В плане срабатываний


Картина маслом - Клавдия Ивановна Триггер на страже капиталистической собственности)


 
Сергей М. ©   (2008-08-02 21:58) [22]


> тогда на ушанках надо проставить инвентарный номер


А тогда см. [3]
)

Прямо-таки напрашивается таблица "Движение ушанок".

з/к Иванов получил ушанку намберван ?  +1
У з/к Иванова изъяли ушанку намберван ?  -1
))


 
Сергей М. ©   (2008-08-02 22:03) [23]


> VirEx ©   (02.08.08 20:00) [16]
>
> можно расшифровать cid eid?
>


Можно. Но Штирлиц в отпуске)

А пока он там, чеши репу над структурой единой "Таблицы движения ушанок, валенков и прочей лагерной шняги".
Уверяю тебя - оч даже пользительное занятие !


 
Zeqfreed ©   (2008-08-02 22:06) [24]

> VirEx ©   (02.08.08 20:00) [16]

Можно, но смотри [3] и [6].


 
Павел Калугин ©   (2008-08-03 02:49) [25]

а количества нету?  тогда выдача-возврат только по 1

select sum(oper), код сотр, код одежды
from (select 1 as oper, код сотр, код одежды from выдано
        union all  
        select -1 as oper, код сотр, код одежды from возвращено) as op
group by код сотр, код одежды

но лучше операции все же в одной табличке держать с признаком направления и количеством выданного. тогда почти проводки бухгалтерские получатся


 
Павел Калугин ©   (2008-08-03 02:51) [26]

забыл последнюю строчку

select sum(oper), код сотр, код одежды
from (select 1 as oper, код сотр, код одежды from выдано
       union all  
       select -1 as oper, код сотр, код одежды from возвращено) as op
group by код сотр, код одежды
having  sum(oper) != 0


 
Johnmen ©   (2008-08-03 03:11) [27]


> Павел Калугин ©   (03.08.08 02:49) [25]

Спасибо тебе, добрый человек! Не оставил в сирости и убогости!


 
Павел Калугин ©   (2008-08-03 10:09) [28]


> Johnmen ©   (03.08.08 03:11) [27]

не понял сарказма......



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.008 c
15-1217179982
Перебежчик
2008-07-27 21:33
2008.09.21
Как это будет на C#?


3-1206457759
redlinelab
2008-03-25 18:09
2008.09.21
Загрузка картинки из OLE из Access


2-1218545586
mandalay
2008-08-12 16:53
2008.09.21
Цикл по формам !


4-1196809281
GanibalLector
2007-12-05 02:01
2008.09.21
EFOpenError Процесс не может получить доступ к файлу


15-1217504410
Правильный$Вася
2008-07-31 15:40
2008.09.21
как перевести на английский





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский