Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];




Вниз

объединение таблиц 


andey   (2002-01-18 19:46) [0]

У меня две таблицы: по приходу товара и расходу,
надо сделать статистику по товару.
Делаю запрос:
select P.DataNak, P.Nametovar, P.Nnaklad, P.Kolvo, P.Zena, R.DatNakl,R.Nametovar, R.NoNaklad, R.Kolvo, R.Zena, R.Komy, R.OtKogo
From prihod.db P, rashod.db R
Мне надо чтобы поля: P.Nametovar и R.Nametovar, P.DataNak и R.DatNakl объединились в одном поле, чтобы потом отсортировать
по возрастанию даты
А сейчас получается все поля разные и не понятно как объединяются в строки
ПОМОГИТЕ ПОЖАЛУЙСТА!!!!



Delirium   (2002-01-18 19:49) [1]

Так что-ли:

select
P.DataNak,
P.Nametovar,
P.Nnaklad,
P.Kolvo,
P.Zena,
R.NoNaklad,
R.Kolvo,
R.Zena,
R.Komy,
R.OtKogo
From prihod.db P, rashod.db R
where (P.Nametovar=R.Nametovar) and (P.DataNak=R.DatNakl)
order by P.DataNak



andey   (2002-01-19 19:45) [2]

Большое спасибо!!!
но даты накладных могут не совпадать(чаще всего), получили сегодня продали завтра. И поля R.Kolvo и R.Zena получяются как Kolvo_1 и Zena_1. Даже если не писать (P.DataNak=R.DatNakl)
то поля P.DataNak и R.DatNakl разные и сортировку вести по какому то одному из полей. Хотелось бы чтобы даты получались в одном поле и будет видно сколько вчера получили и сколько сегодня продали.



andey   (2002-01-20 22:33) [3]

неужели невозможно такое сделать?



fnatali   (2002-01-21 06:38) [4]

Попробуй использовать union в запросе.
select P.datnak,... from P
union
select R.datnakl,... from R



Evgen1   (2002-01-21 16:58) [5]

Возможно я что-то не понял но по моему так:
Товар к примеру "макароны" может быть в приходе по разным накладным и по разной цене и лежать на складе не проданный т.е. в расходе его нет.
Напрашивается создание справочника товаров, каждой приходной операции присваивать уникальный номер и расходные операции осуществлять уже по этому номеру. Тогда имеет смысл говорить о каком то анализе прихода-расхода.



andey   (2002-01-22 19:40) [6]

Evgen1 ты почти правильно понялю. Но ту меня проще: товар который пришёл по новой цене меняе цену такого товара имеющегося на складе. Но это по моему не имеет значения. С помощью филтрации я произвожу отбор товара, совмещая расходную и приходную накладные. И нужно отсортировать его согласно календаря
, поля дата в формате data, т.е. получил 22.12.01 , следующая строка 23.12.01(т.е из расходной накладной).
Большое спасибо что откликнулись на просьбу о помощи!!!
Помогите пожалуйста, дело стоит свеч !!!



Delirium   (2002-01-22 20:19) [7]

Делать так, я думаю

select DatNakl, Nametovar, NoNaklad, Kolvo, Zena, Komy, OtKogo ,1 as iPos
from rashod
union all
select DataNak, Nametovar, Nnaklad, Kolvo, Zena, null, null, 2 as iPos
from prihod
order by DataNak,iPos




andey   (2002-01-23 22:05) [8]

Почему-то дает ошибку на null, а если убираешь null то ошибка в order by DataNak,iPos. Может как-то по другому.



andey   (2002-01-24 20:54) [9]

Неужели никто не подскажет!?



fnatali   (2002-01-25 06:02) [10]

По-моему, за тебя уже всё и так написали. Вместо null попробуй поставить, например, если поля komy и otkogo символьные, то такой же размерности и типа пустые символьные строки.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.021 c
1-57114           Delphir               2002-02-02 11:45  2002.02.18  
Cloning ListView and ComboBox


14-57203          Ghg                   2001-12-28 17:21  2002.02.18  
Функция копирования файла


3-56979           Максим С.             2002-01-23 13:32  2002.02.18  
Нужен пример работы с Interbase на Delphi5


6-57162           Диман                 2001-11-28 12:14  2002.02.18  
методы Socket и Connect (и т.п.) в модуле WinSock - как вызывать?


3-56996           PAV                   2002-01-22 19:21  2002.02.18  
Объектные базы данных