|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
Таблица 1 (Было яблок) ПродуктЦветКоличествоЯблокиЗеленые4ЯблокиКрасные7 Таблица 2 (Гости) ПродуктГостьКоличествоЯблокиСаша1ЯблокиОлег2ЯблокиМаша5ЯблокиВалентин3 Очень хочется получить Результат в виде таблицы: Таблица 3 (Кто каких яблок съел?) ПродуктГостьЦветКоличествоЯблокиСашаЗеленые1ЯблокиОлегЗеленые1ЯблокиОлегКрасные1ЯблокиМашаЗеленые2ЯблокиМашаКрасные3ЯблокиВалентинКрасные3 Устроит любая комбинация Главное требование,чтобы результирующая таблица сходилась с первыми двумя Возможно ли получить такое решение одним запросом? Пожалуйста помогите решить! Заранее благодарю за любые идеи. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2013, 12:50 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
Вы по-русски, по шагам, алгоритм распределения количеств написать можете? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2013, 12:53 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
v64Пожалуйста помогите решить! - Составьте все возможные комбинации из Таблица 2 - Сравните эти комбинации по сумме с Таблица 1 и выберите те, у которых сумма совпадает Ваши данные очень упрощены. В реальной задаче может не быть решение где "Количество" из обеих таблиц будет точно совпадать ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2013, 12:57 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
Паганель, в том то и дело что алгоритм может быть любым а точнее его нужно придумать. можно предположить про существование каких то вероятностей но главное тут получить результирующую таблицу из которой я могу получить две первые, а содержимое ее может быть любым. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2013, 13:00 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
Glory, Согласен. но конкретно в этой задаче общее количество первых двух таблиц совпадает. просто так получилось что потеряна связь между ними(( которую и требуется восстановить каким то хитрым образом. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2013, 13:02 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
v64в том то и дело что алгоритм может быть любым а точнее его нужно придумать Какую реальную задачу вы решаете ? Партиционный учет ? Заказы-оплаты ? Подбор наилучшего варианта ? На все эти задачи алгоритмы уже давно придуманы ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2013, 13:04 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
v64Паганель, в том то и дело что алгоритм может быть любым а точнее его нужно придумать. можно предположить про существование каких то вероятностей но главное тут получить результирующую таблицу из которой я могу получить две первые, а содержимое ее может быть любым. можно так, например. если суммарное количество продукта в таблицах не сходится, то ответ будет для меньшего Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2013, 13:22 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
Glory, партионный учет наверное подойдет но как его применить к конкретному случаю? если говорить другими словами то есть регистр продаж в котором есть товар и серия, но нет продавца, и есть таблица продаж сотрудниками в которой есть информация о товаре и сотруднике но нету информации о товаре. Необходимо получить таблицу в которой были бы все три сущности и которая отвечала бы на вопрос какой товар какой серии был продан продавцом, понятно что однозначного ответа тут быть не может но устроит любой не противоречащий исходным данным. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2013, 13:23 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
Shakill, спасибо за идею. попробую применить ее в 1С-ном запросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2013, 13:27 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2013, 13:33 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
Shakill, Еще раз хочу поблагодарить за помощь. к сожалению любимое 1С предприятие не располагает функцией row_number(). но алгоритм вполне устроил. на всякий случай выложу поделку на 1с (вдруг кому понадобится): ВЫБРАТЬ "Яблоко" КАК Товар, "Зеленый" КАК Свойство, 3 КАК Количество ПОМЕСТИТЬ Фрукты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Яблоко", "Красный", 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Груша", "Зеленый", 2 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ "Яблоко" КАК Товар, "Маша" КАК Потребитель, 1 КАК Количество ПОМЕСТИТЬ Потребители ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Яблоко", "Наташа", 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Яблоко", "Света", 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Груша", "Света", 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Груша", "Маша", 1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 0 КАК Цифра ПОМЕСТИТЬ Цифры ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т1.Цифра + Т2.Цифра * 10 КАК Число ПОМЕСТИТЬ Числа ИЗ Цифры КАК Т1, Цифры КАК Т2 ГДЕ Т1.Цифра + Т2.Цифра * 10 > 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Номер, Т.Товар, Т.Свойство, Т.Количество ПОМЕСТИТЬ НомераФрутовыхГрупп ИЗ Фрукты КАК Т ВНУТРЕННЕЕ СОЕДИНЕНИЕ Фрукты КАК Т1 ПО (Т.Товар + Т.Свойство >= Т1.Товар + Т1.Свойство) СГРУППИРОВАТЬ ПО Т.Товар, Т.Свойство, Т.Количество ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Номер, Т1.Товар, Т1.Потребитель, Т1.Количество ПОМЕСТИТЬ НомераПотребительскихГрупп ИЗ Потребители КАК Т1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Потребители КАК Т2 ПО (Т1.Товар + Т1.Потребитель >= Т2.Товар + Т2.Потребитель) СГРУППИРОВАТЬ ПО Т1.Товар, Т1.Потребитель, Т1.Количество ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т1.Товар, Т1.Свойство, Т1.Количество, Т1.Номер * 1000000000 + Т2.Число КАК Индекс ПОМЕСТИТЬ ФруктыПоштучно ИЗ НомераФрутовыхГрупп КАК Т1 ЛЕВОЕ СОЕДИНЕНИЕ Числа КАК Т2 ПО Т1.Количество >= Т2.Число СГРУППИРОВАТЬ ПО Т1.Товар, Т1.Свойство, Т1.Количество, Т2.Число, Т1.Номер ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т1.Товар, Т1.Потребитель, Т1.Количество, Т1.Номер * 1000000000 + Т2.Число КАК Индекс ПОМЕСТИТЬ ПотребителиПоштучно ИЗ НомераПотребительскихГрупп КАК Т1 ЛЕВОЕ СОЕДИНЕНИЕ Числа КАК Т2 ПО Т1.Количество >= Т2.Число ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Номер, Т1.Товар, Т1.Свойство, 1 КАК Количество ПОМЕСТИТЬ ИндексСвойства ИЗ ФруктыПоштучно КАК Т1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ ФруктыПоштучно КАК Т2 ПО Т1.Индекс >= Т2.Индекс И Т1.Товар = Т2.Товар СГРУППИРОВАТЬ ПО Т1.Товар, Т1.Свойство, Т1.Количество, Т1.Индекс ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Номер, Т1.Товар, Т1.Потребитель, 1 КАК Количество ПОМЕСТИТЬ ИндексПотребителя ИЗ ПотребителиПоштучно КАК Т1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПотребителиПоштучно КАК Т2 ПО Т1.Товар = Т2.Товар И Т1.Индекс >= Т2.Индекс СГРУППИРОВАТЬ ПО Т1.Товар, Т1.Потребитель, Т1.Количество, Т1.Индекс ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т1.Товар, Т1.Свойство, Т2.Потребитель, СУММА(Т1.Количество) КАК Количество ИЗ ИндексСвойства КАК Т1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИндексПотребителя КАК Т2 ПО Т1.Товар = Т2.Товар И Т1.Номер = Т2.Номер СГРУППИРОВАТЬ ПО Т1.Товар, Т1.Свойство, Т2.Потребитель Благодарю всех неравнодушных за оперативную поддержку в решении задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2013, 19:01 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
v64, гулять так гулять вариант invm одним запросом для 2012 сервера. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2013, 19:53 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
Shakill, Ваш вариант очень понравился. Правда результат с ошибкой Выдает что Валентин съел 4 Зеленых яблока. Но он хотел всего 3 ( сможете ошибку поправить? спасибо) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2016, 17:07 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
Может кто другой поправит? или подскажет куда копать? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 09:51 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
M-stlyleМожет кто другой поправит? или подскажет куда копать? а может сами уже поравите условие... всеж написанно уже ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 09:58 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
MaxxM-stlyleМожет кто другой поправит? или подскажет куда копать? а может сами уже поравите условие... всеж написанно уже пытался, но никак не получилось( ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 12:38 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
M-stlyle, автор алгоритма с октября 2015 года тут не был, так что вряд ли он Вам поможет ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 15:07 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
MairosM-stlyle, автор алгоритма с октября 2015 года тут не был, так что вряд ли он Вам поможет если человек не отмечается в виде сообщений, это совсем не означает, что он совсем тут не бывает. а уж за примером громких имен, в какой-то момент перешедших в астрал(readonly), далеко ходить не надо as the matter of fact: число читателей данной ветки значительно превышает число писателей ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 15:41 |
|
задачка про яблоки или слияние 2х таблиц
|
|||
---|---|---|---|
#18+
основная идея рандомно высчитать количество яблок одного цвета для каждого гостя последовательно вычитая итоговое количество зеленые - саша = SELECT ROUND(RAND()*4),0) допустим = 1 зеленые - олег = SELECT ROUND((4-1)*RAND()+1),0) и т.д. вобщем то да, можно одним запросом написать решение если заранее известно количество гостей, и продуктов ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 04:42 |
|
|
start [/forum/topic.php?fid=46&msg=38230743&tid=1686252]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 265ms |
total: | 401ms |
0 / 0 |