Вопросы не для собеседования 1 | |
---|---|
Prudivus Автор Сообщений: 4283 Откуда: Кишинев Дата регистрации: 14.12.2006 |
Решил создать отдельную тему, так как этот вопрос для собеседования, пожалуй, некорректен - сложноват.
Задание: одним селектом сделать связь типа многие-ко-многим между двумя таблицами типа приход и расход, для простоты без учета кода товара, склада и т.п., по методу FIFO (первый приход первым расходуется). Считаем что таблицы прихода и расхода уже отсортированы в правильном порядке (по id). Дано (данные произвольные):
Требуется получить таблицу связей вида
Исправлено 1 раз(а). Последнее : AleksM, 01.03.07 11:47 |
Re: Вопросы не для собеседования 1 | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
Если честно, то ничего не понял на счет выходной таблицы
------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: Вопросы не для собеседования 1 | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Я тоже
тем более не понятно id_in id_out amount
1 1 5
1 2 5
Эта циферка как считается ? ------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Вопросы не для собеседования 1 | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
Ага. И почему, например нет такого
id_in id_out amount 1 3 5 ------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: Вопросы не для собеседования 1 | |
---|---|
Prudivus Автор Сообщений: 4283 Откуда: Кишинев Дата регистрации: 14.12.2006 |
Таблица связей реализует схему связи многие-ко-многим между таблицами прихода и расхода:
id_in - внешний ключ, ссылка на идентификатор записи в таблице прихода; id_out - внешний ключ, ссылка на идентификатор записи в таблице расхода; amount - количество товара, списываемого по записи расхода из записи прихода (странно, я думал все сталкивались с подобными задачами) |
Re: Вопросы не для собеседования 1 | |
---|---|
Prudivus Автор Сообщений: 4283 Откуда: Кишинев Дата регистрации: 14.12.2006 |
Поясняю как считается эта таблица. Берем первую строку расхода: по ней списывается 5 единиц, сравниваем со строками прихода, видим что по первой строке прихода есть в остатке 10 единиц, получается что по первой строке расхода можем все 5 единиц взять из первой же строки прихода, таким образом формируется связь (id_in=1, id_out=1, amount=5), и в остатке первой строки прихода остается 5 единиц (10-5). Берем вторую строку расхода (7 единиц), сравниваем с остатками по строкам прихода, ... в результате формируем две строки связи: (id_in=1, id_out=2, amount=5) и (id_in=2, id_out=2, amount=2) (5+2=7). В результате по первой строке прихода остатка нет, по второй остаток уменьшился на 2 единицы (20-2=18). И так далее. |
Re: Вопросы не для собеседования 1 | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
Цитата:Туман усилился, видимость 0 (это я про свою голову) ------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: Вопросы не для собеседования 1 | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Ну и что в решении интересного
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Вопросы не для собеседования 1 | |
---|---|
Prudivus Автор Сообщений: 4283 Откуда: Кишинев Дата регистрации: 14.12.2006 |
Исправлено 1 раз(а). Последнее : Prudivus, 01.03.07 12:35 |
Re: Вопросы не для собеседования 1 | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
Внутренний голос мне подсказывает, что это не то
Попробую сформулировать задачу: Нужно сформировать выходную таблицу, в которой было бы видно, какое количество и из какого прихода можно взять для каждого расхода (по FIFO). ------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. Исправлено 2 раз(а). Последнее : AleksM, 01.03.07 12:37 |
Re: Вопросы не для собеседования 1 | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Ага, те вся твоя постановка задачи - это только для одного товара, причем по этому товару есть 4-е прихода и 7 расходов, пралЬна?
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Вопросы не для собеседования 1 | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Если ещё проще, то иметь полную оборотку
ост на начало - приход - расход - ост на конец. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Вопросы не для собеседования 1 | |
---|---|
Prudivus Автор Сообщений: 4283 Откуда: Кишинев Дата регистрации: 14.12.2006 |
Цитата:Совершенно верно. |
Re: Вопросы не для собеседования 1 | |
---|---|
Prudivus Автор Сообщений: 4283 Откуда: Кишинев Дата регистрации: 14.12.2006 |
Цитата:Да нет, обороток пока не надо, просто таблицу связей. |
Re: Вопросы не для собеседования 1 | |
---|---|
ssa Сообщений: 12999 Откуда: Москва Дата регистрации: 23.03.2005 |
То есть задачка то итеративная, а решить нужно одним запросом декларативного языка. И еще внутри запроса понятий первый/последний/следущий/предыдущий вроде как в принципе нет.
------------------ Лень - это неосознанная мудрость. |
Re: Вопросы не для собеседования 1 | |
---|---|
Prudivus Автор Сообщений: 4283 Откуда: Кишинев Дата регистрации: 14.12.2006 |
Цитата:order by Решить это все одним запросом можно. Для начала можно разбить на последовательные запросы с записью промежуточных результатов, на больших объемах это дает определенный выигрыш. |
Re: Вопросы не для собеседования 1 | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Ну изобрази ?
------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Вопросы не для собеседования 1 | |
---|---|
leonid Сообщений: 3202 Откуда: Рига Дата регистрации: 03.02.2006 |
Это конечно не один селект, но у меня тут только шестерка, а на девятке это элементарно запихивается в один
|
Re: Вопросы не для собеседования 1 | |
---|---|
Prudivus Автор Сообщений: 4283 Откуда: Кишинев Дата регистрации: 14.12.2006 |
leonid
Похоже что правильно, если можно - несколько комментариев и итоговую таблицу в студию. Комментарии прошу потому как у меня код sql чуток другой. Исправлено 1 раз(а). Последнее : Prudivus, 01.03.07 15:11 |
Re: Вопросы не для собеседования 1 | |
---|---|
ssa Сообщений: 12999 Откуда: Москва Дата регистрации: 23.03.2005 |
Батенька, order by - это не внутри, а снаружи, сортировка готового результата. ------------------ Лень - это неосознанная мудрость. |
© 2000-2024 Fox Club  |