|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Sql запрос что то не получается
Даны несколько таблиц к примеру "абоненты", "улицы" и "данные". В таблице "данные" есть данные абонентов (у каждого аб. несколько данных). Как сделать запрос чтобы из табл "данные" вытаскивал посл данные абонента? у меня чето не получается. Если кто может написать к примеру запрос. Заранее блогодарен!
|
#2
|
|||
|
|||
ну, нужно некоторое поле, по которому можно определить, что это последние данные. тогда можно сказать запросу что-то типа Top 1 и отсортировать эти данные в нужном порядке. Или использовать max по тому же полю.
|
#3
|
||||
|
||||
Как уже сказали необходимо поле котороя является критерием "старости" данных. Таковым может являтся например ДатаСоздания записи (CreateDate), или поле-счетчик таблицы (ID).
Для первого варианта запрос будет примерно такой: Код:
select Top 1 * from Data where Data.AbonentID = :AbonentID order by Data.CreateDate Desc Код:
select Top 1 * from Data where Data.AbonentID = :AbonentID order by Data.ID Desc Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
||||
|
||||
Надо мне кажеться тему прилепить.
SQL запрос на просчёт "уникальных" полей в уже отфильтрованном списке. Код:
ZQuery1.Close; ZQuery1.SQL.Clear; ZQuery1.SQL.Add('Select * FROM '+db_main+''); ZQuery1.SQL.Add('WHERE Realisation_Date LIKE ''%.'+09.2010'); ZQuery1.SQL.Add('AND Warehouse = ''МР'''); ZQuery1.Open; После этого получаю таблицу первая колонка которой: Article: __________ АААА0001 АААА0002 АААА0003 АААА0004 ББББ0001 ББББ0002 ББББ0003 СССС0001 АААА,ББББ,СССС - уникальны, т.е. ответ в результате "3" должен получиться Что надо добавить? |
#5
|
||||
|
||||
Примерно так я это вижу:
Код:
select Count(Left(CodeField,4)) from Table group by Left(CodeField,4) Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
||||
|
||||
SELECT DISTINCT LEFT(Article,4) as Article FROM db_main
Да да да))) Спасибо. Теперь осталось разобраться как это всё совместить |
#7
|
||||
|
||||
Код:
Article Product Weight SP PP_p1g PP Profit МРБУ0024 Кольцо 6,94 2221 1100 1100 5413 МРБУ0028 Серьги 5,56 1779 1100 1100 4337 МРБУ0092 Кольцо 1,46 561 799 799 606 МРБУ0104 Цепь 4,58 2093 799 799 1566 МРБУ0106 Цепь 5,49 5 80 80 434 МРБУ0114 Серьги 7,33 2925 799 799 2932 МРБУ0115 Серьги 5,17 1225 799 799 2906 как оформить суммирование по нескольким полям сразу? т.е. чтобы в результате запроса получилось что то вроде Код:
Weight SP PP Profit 21,56 123123 2342 123123 |
#8
|
||||
|
||||
Тогда возможно так устроит:
Код:
select sum(Weigth) as Weigth,sum(SP) as SP,sum(PP) as PP,sum(Profit) as Profit from db_main Код:
select Product, sum(Weigth) as Weigth,sum(SP) as SP,sum(PP) as PP,sum(Profit) as Profit from db_main group by Product Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 03.10.2010 в 01:42. |
#9
|
||||
|
||||
Как же всё просто. Я перечитал весь FAQ на sql.ru там по поводу команд через запЯтую ничего не было
|
#10
|
||||
|
||||
а ели групировка нужна не по целому полю а только по его части.
group by product Даст по Код:
кольцо крест Код:
МРМР* МРБУ* Всё понял: Код:
MyQuery1.Close; MyQuery1.SQL.Clear; MyQuery1.SQL.Add('SELECT sum(weight) as Sumweight, sum(PP) as SumPP, sum(SP) as sumSP, sum(Profit) as SumProfit'); MyQuery1.SQL.Add('from ('); MyQuery1.SQL.Add('SELECT * FROM lucky_table'); MyQuery1.SQL.Add('WHERE Warehouse ='''+edRepWarehouse.Text+''''); MyQuery1.SQL.Add('AND Realisation_Date Like ''%.'+cbRepRealisation_Date.Text+'.2010'''); MyQuery1.SQL.Add(') as aq group by Left(Article,4)'); MyQuery1.Open; Авось кому пригодиться. Последний раз редактировалось Uniq!, 05.10.2010 в 21:30. |