powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Объединение таблиц
37 сообщений из 37, показаны все 2 страниц
Объединение таблиц
    #32659392
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая задача. Таблица 1 - расход за период, таблица 2 - приход за период. Как в одном запросе получить данные из двух таблиц, т.е. в общем случае разное количество записей в таблица. Например, приходные накладные и тут же параллельно расходные накладные. Если приходным меньше чем расходных то на месте приходным оставляем пустые места оставляем и наооборот. Сильно сумбурно написал, но где-то так
Расх, накл. № Сумма Приход. накл.№ Сумма
4 100 5 20
5 200 6 200
8 1000
10 2000
Я сейчас делаю через временную таблицу, а можно ли одним запросом.
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659396
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗАбили пробелы, ну цифры в общем каждая под своим столбцом (их 4 штуки)
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659417
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то я ЭТО уже видел. Или у меня дежа-вю?
Проект явно кривой, но если сильно жмёт, то юзай FULL JOIN .
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659442
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое прикольное, что ну ни коим боком не догадаться, по какому полю объединять таблицы...
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659449
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛентяйСамое прикольное, что ну ни коим боком не догадаться, по какому полю объединять таблицы...А просто так. По порядку.
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659454
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том то и все дело, что join ну никак не получается, т.е. есть момент для которых есть данные в таблице 1, но совершенно нет данных из таблицы 2 - и как их объединять?
Две практически независимые таблицы, как если бы нарисовать на отдельных листах бумаги две таблицы, а потом положить рядом.
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659519
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может не парить себе мозги и пообщаться с бухгалтером, чтобы он объяснил, нафига это надо. С таким объединением врядли чего-то еще дальше можно сделать. Может просто рядом на один лист разместить два отчета?
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659546
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ovaт.е. есть момент для которых есть данные в таблице 1, но совершенно нет данных из таблицы 2Это означает, что в отсутствии прихода был осуществлён расход.
Т.е. продан товар неизвестного происхождения. (Это серьёзная статья, согласно УК)

МимопроходящийПроект явно кривой, но если сильно жмёт, то юзай FULL JOIN.Полностью согласен.
Но изначально, кривизна проекта — от криворукости бухгалтера. Её царёвы службы ни разу не "трахали".
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659602
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeishe ovaт.е. есть момент для которых есть данные в таблице 1, но совершенно нет данных из таблицы 2Это означает, что в отсутствии прихода был осуществлён расход.
Т.е. продан товар неизвестного происхождения. (Это серьёзная статья, согласно УК)
А чего, если положить рядом два списка накладных, в которых могут быть абсолютно разные товары (именно это и спрашивалось), то происхождение товара станет известным?
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659603
Фотография alex777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структура кривая без разговоров

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

вот собствно с краце

Alex_M
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659617
Deepseadiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предложил бы еще учет по партиям. Организуй в базе аналог 1с регистра партии товара и основные функции работы с ним. Бесспорно регистры в 1с наиболее удачное их изобретение. Да и не мешало бы реализовать последовательность проведения и точку актуальности. Т.к. у нас всегда что-нибудь проводят/перепроводят задним числом. Соответственно остатки и НДС сразу плывет.
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659621
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ведь точно уже было.
И автор тот же.
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659627
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛентяйА чего, если положить рядом два списка накладных, в которых могут быть абсолютно разные товары (именно это и спрашивалось), то происхождение товара станет известным?
Расход должен быть меньше или равен приходу. Т.е. на каждую продажу есть соответствующий приход.
Если же пришло 3, а продано 4, то 1 это и есть неизвестное происхождение.
Или пришло 0, продано 3. (два списка накладных, в которых могут быть абсолютно разные товары)

Ворованным торгуете, батенька.
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659634
Фотография alex777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeepseadiverПредложил бы еще учет по партиям. Организуй в базе аналог 1с регистра партии товара и основные функции работы с ним. Бесспорно регистры в 1с наиболее удачное их изобретение. Да и не мешало бы реализовать последовательность проведения и точку актуальности. Т.к. у нас всегда что-нибудь проводят/перепроводят задним числом. Соответственно остатки и НДС сразу плывет.

Тригер просчитывает остатки,
а в таблице товаров я специально не сказал про поле цена она высчитывается, а не храниться чтоб все можно было пересчитать в случае если что-то меняется в накладной, предлагаю еще запретить приходование на отрицательный остатток
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659635
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, у меня есть приходная накладная на 100 рублей. Я продал одну бутылку водки. Это законная продажа?
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659642
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предыдущее сообщение к Zmeishe было адресовано...
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659644
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛентяйЯ продал одну бутылку водки. Это законная продажа?Ниииииизаконная! Как ты мог?!
Водку! Продать!?
Изверг!...
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659656
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий ЛентяйЯ продал одну бутылку водки. Это законная продажа?Ниииииизаконная! Как ты мог?!
Водку! Продать!?
Изверг!...
Бизнес по русски - скоммуниздить вагон водки, продать, а деньги пропить...
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659657
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну все прям запинали. Задача для лучшей ясности несколько утрировалась. Если уж так критично - пожалуйста, несколько расширю.
Есть отчет - баланс фирм. Идет фирма, по ней рядом в две колонки (в широком смысле этого слова) пишется отгрузка за период (там много данных и по контрактам и по спецификациям), а в соседней колонке - оплата за период, просто дата и сумма оплаты. И так по каждой фирме. Вот такой отчет.
А такую форму не кто-нибудь, а ген.директор требует (а "фирмочка" то у нас не маленькая - 60 тыс. чловек, так что дядя большой - с ним не поспоришь).

P.S. Кстати в другой проге у меня практически и работают регистры как в 1С - честно говорю, украл идею :)
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659667
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ovaЕсть отчет...Вот от сюда и танцуй.
Для отчётов есть спец.средства.
Которые позволяют и это (в том числе).
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659669
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийА ведь точно уже было.
И автор тот же.

Сравнил слона с носорогом, там был вопрос о том что в Интербейсе нет объединения с набором данных, получаемом по селект, т.е. чисто справочный вопрос - не знал я этого, а тут я как бы совета спрашиваю.
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659678
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лентяй Мимопроходящий ЛентяйЯ продал одну бутылку водки. Это законная продажа?Ниииииизаконная! Как ты мог?!
Водку! Продать!?
Изверг!...
Бизнес по русски - скоммуниздить вагон водки, продать, а деньги пропить...
Интересно, на этом форуме за оффтоп банят?
Или модераторы тут для красивого названия?
На SWRUS уже давно бы по шапке получили.

Я данный топик уже смотрю не для того, чтобы чему-то новому научиться, а исключительно для прикола. Что-то левое спросили, что-то левое ответили, поприкалывались по ходу дела.
Пятница, блин, тепло, хорошо, праздники на носу, пиво и девки на уме.
Ништяк!!!
P.S. Может песни хором попоём?
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659690
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mwolf ЛентяйБизнес по русски - скоммуниздить вагон водки, продать, а деньги пропить...
Интересно, на этом форуме за оффтоп банят?Пока, только строгий выговор с занесением был
mwolfИли модераторы тут для красивого названия?Федору сейчас не до того. Он свой проект реализует.
Но иногда, заглядывает.
mwolfНа SWRUS уже давно бы по шапке получили.Ой! А кто это?

mwolfЯ данный топик уже смотрю не для того, чтобы чему-то новому научиться, а исключительно для прикола. Что-то левое спросили, что-то левое ответили, поприкалывались по ходу дела.
Пятница, блин, тепло, хорошо, праздники на носу, пиво и девки на уме.
Ништяк!!!Вот. И не порти людЯм праздник.
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659716
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
mwolfНа SWRUS уже давно бы по шапке получили.Ой! А кто это?

Это форум всеросийского общества шароварения :-). Shareware то есть.

Мимопроходящий
Вот. И не порти людЯм праздник.

Я!!! Портить!!! Да я всеми руками за!!!!
Я ж даже вот, что написал:
mwolfP.S. Может песни хором попоём?
P.S. Чувствую, что, если модератор таки сюда забредёт, то и мне на с занесением хватит за эти разговоры.))
Р.P.S. Кстати, научите смайлики красивые вставлять. Общий принцип вроде понял, но как их цивильно в пост добавить?
...
Рейтинг: 0 / 0
Объединение таблиц
    #32659721
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mwolfР.P.S. Кстати, научите смайлики красивые вставлять. Общий принцип вроде понял, но как их цивильно в пост добавить? Тынц
...
Рейтинг: 0 / 0
Объединение таблиц
    #32660050
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛентяйХорошо, у меня есть приходная накладная на 100 рублей. Я продал одну бутылку водки. Это законная продажа?
Если приходная накладная на водку — продажа законная.
Если на пиво — НЕ законная. (Бадяжная твоя водка без приходной накладной. Рояль в гараже разливаешь.)
Отсюда проблема этой темы. Приход на пиво, расход — дырка. Приход — дырка, расход — водка. Мим предложил FULL JOIN — больше никак. Для начала советую не ЛЕНИТЬСЯ и изучить УК — соучастником пойдёшь. Либо править мозги бухгалтеру, затем структуру базы.
...
Рейтинг: 0 / 0
Объединение таблиц
    #32660069
Dr_Mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну развели тут флейма!!!
"ova" спросить нормально не умеет, а народ ответить без стёба не может :-))

Итак, спецурок для "ova": "Как правильно задавать и оформлять вопрос" -
Подскажите пожалуйста, как мне составить запрос для получения данных из двух таблиц путем объединения их по значению одного поля, причем известно, что в обеих таблицах записей с определенным значением этого поля может быть несколько, или не быть вообще.
Хотелось бы получить что-либо подобное:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
+----------------+-----------------+-----------------+----------------+ ... -----------------+-----------------+
| Таблица1Поле1  |  Таблица1Поле2  |  Таблица2Поле1  |  Таблица2Поле2 |       Таблица1Поле3  |  Таблица2Поле3  |
+----------------+-----------------+-----------------+----------------+ ... -----------------+-----------------+
|       15       |      236        |       4         |       300      |         Период1      |     Период1     |
+----------------+-----------------+-----------------+----------------+ ... -----------------+-----------------+
|                |                 |       5         |       562      |                      |     Период1     |
+----------------+-----------------+-----------------+----------------+ ... -----------------+-----------------+
|       16       |     4050        |       6         |      1240      |         Период2      |     Период2     |
+----------------+-----------------+-----------------+----------------+ ... -----------------+-----------------+
|       17       |      340        |                 |                |         Период2      |                 |
+----------------+-----------------+-----------------+----------------+ ... -----------------+-----------------+
|       18       |      850        |                 |                |         Период3      |                 |
+----------------+-----------------+-----------------+----------------+ ... -----------------+-----------------+
|                |                 |       7         |       170      |                      |     Период4     |
+----------------+-----------------+-----------------+----------------+ ... -----------------+-----------------+
Где в правой части оборажены поля, на основе которых производится объединение таблиц.

И вообще, FAQ для кого написан???
...
Рейтинг: 0 / 0
Объединение таблиц
    #32660582
Фотография alex777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообщето описаная ситуация т.е. приход дырка расход водка или наоборот не является преступлением, это может являться лишь нарушением положения о бухгалтерском учете ито не всегда поясняю:
есть 2 вида учета количественный и суммовой
такое ощущение что база проектировалась именно под суммовой учет при котором не учитывается количество товаров а лишь учитывается их сумма например если на кухню было оптущено продуктов на 1000 руб то на 1000 кухня должна выдать продукции.
При количественном учете если на кухню было отдано продуктов на 10 тарелок супа исходя из норм закладки то 10 тарелок кухня и должна выдать.

Бухгалтера больше "любят" суммовой учет т.к. например никто не мешает унести домой тигровые креветки а вместо них притащить гнилой картошки которую потом списать.

зы
структуру базы надо пересматривать

Alex_M
...
Рейтинг: 0 / 0
Объединение таблиц
    #32660655
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Dr_Mike.

Может, конечно и прав, но мне мой вопрос кажется такой же понятный как и Ваш, хотя суть вопроса Вы несколько увели в сторону, тока моя таблица "плохо" форматирована, а принцип тот же.

To All.
Если ответите на хорошо форматированный и правильно поставленный вопрос Dr_Mike - я буду только счастлив
...
Рейтинг: 0 / 0
Объединение таблиц
    #32660851
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr_MikeНу развели тут флейма!!!
"ova" спросить нормально не умеет, а народ ответить без стёба не может :-))

Итак, спецурок для "ova": "Как правильно задавать и оформлять вопрос" -
Подскажите пожалуйста, как мне составить запрос для получения данных из двух таблиц путем объединения их по значению одного поля...Насколько я понял, нету там поля, по которому нужно объединять. Сформировал таки автор коротко и ясно, что ему надо:Две практически независимые таблицы, как если бы нарисовать на отдельных листах бумаги две таблицы, а потом положить рядом. Я предложил аж два решения:
1 послать нафиг бухгалтера (то есть выяснить у него, нужно ли это вообще, а в процессе выяснения прийти к выводу что не нужно...)
2 "положить" два отчета рядом на один лист, и пущай бухгалтер радуется...

Ну а уж если хочется непременно на сервере этим извратом заняться, то вот так можно:
Пусть имеются две таблички
Код: plaintext
CREATE TABLE T1 (\n    Id   INTEGER, // Primary key\n    Fld1 ...,\n    ...\n    FldN ...\n);\nCREATE TABLE T2 (\n    Id   INTEGER, // Primary key\n    Fld1 ...,\n    ...\n    FldN ...\n);\n
Тогда запрос должен вот так выглядеть
Код: plaintext
Select t1.Id, t1.Fld1,... t1.FldN, \n       t2.Id, t2.Fld1,... t2.FldN\nFrom t1 t_1\nFull outer join t2  t_2 on\n  (Select Count(*) From t1 Where Id <= t_1.Id) =\n  (Select Count(*) From t2 Where Id <= t_2.Id)\n
...
Рейтинг: 0 / 0
Объединение таблиц
    #32661150
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НЕсколько извращенный вариант, так сразу и не скажешь чего получится, но буду пробовать, а суть поняли верно, спасибо.
...
Рейтинг: 0 / 0
Объединение таблиц
    #32661162
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ведь работает, абалдеть!!!!
...
Рейтинг: 0 / 0
Объединение таблиц
    #32661186
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ovaНЕсколько извращенный вариант...Задача извратная потому что!
...
Рейтинг: 0 / 0
Объединение таблиц
    #32661203
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ovaА ведь работает, абалдеть!!!!А теперь разберисъ как это работает :)
Если интересно могу пояснить, через полчасика...
...
Рейтинг: 0 / 0
Объединение таблиц
    #32663951
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛентяйЕсли интересно могу пояснить, через полчасика...
А что пол-часика еще не прошло? ;-)
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Объединение таблиц
    #32664106
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Uskov ЛентяйЕсли интересно могу пояснить, через полчасика...
А что пол-часика еще не прошло? ;-)
------------------------
С уважением, Denis Uskov
У черт, часы остановились... :)

Ну ладно, задача состоит в том, чтобы в запросе объединить две таблицы, не имеющие полей, подходящих для объединения. Решение - если таких полей нет, попробуем их создать во время выполнения запроса. Попробуем пронумеровать строки таблиц от единицы до количества записей. При наличии в таблице уникального поля или комбинации полей (далее PK) номером строки можно сделать количество записей с PK, меньшим или равным PK очередной записи. Попробуем такой запрос :
Код: plaintext
1.
2.
Select (Count(*) from SomeTable where PK <= T.PK) as RNum, T.* 
From SomeTabe T
Получили, то что и хотели. Стоит, правда, обратить внимание на статистику выполнения запроса. Там увидим большое количество чтений. Вообщем-то ничего удивительного. Ведь приходится для каждой очередной строки выполнить подзапрос с count. Но тем не менее цель достигнута. Теперь это виртуальное поле можно использовать для объединения двух таблиц:
Код: plaintext
1.
2.
3.
4.
5.
6.
Select t1.Id, t1.Fld1,... t1.FldN, 
       t2.Id, t2.Fld1,... t2.FldN
From t1 t_1
Full outer join t2  t_2 on
  (Select Count(*) From t1 Where Id <= t_1.Id) = // Вот это первое "виртуальное" поле
  (Select Count(*) From t2 Where Id <= t_2.Id)   // А это второе
Понятно, что Join можно использовать любой, получая при этом различные варианты объединения таблиц. Если в базе имеются парочка свободных генераторов, которые гарантированно никто другой во время исполнения запросов не "дернет" то вместо count можно использовать их. Тогда скорость выполнения запроса значительно увеличиться.
...
Рейтинг: 0 / 0
Объединение таблиц
    #32665995
ova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, я так и понял, спасибо большое. НАверное все же придется использовать генераторы.
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Объединение таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]