Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как из таблички выбрать данные так, чтобы из 2, одинаковых полей отобразилась только то 
:(
    Опции темы
x404
Дата 30.11.2003, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.11.2003

Репутация: нет
Всего: нет



Как из одной таблички(МАТЕРИАЛЫ) выбрать данные так, чтобы из двух
одинаковых по наименованию и диаметру , но разных по цене полей, отобразилась только
то поле,которое имеет самую последню дату занесения(поле ДАТА в табличке есть).
PM MAIL WWW ICQ Skype   Вверх
Vit
Дата 30.11.2003, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Код
SELECT * From Table4 x
Inner JOIN
(select m, max([Date]) as maxdate From Table4 y
group By m) y
ON (y.m = x.m) and (y.maxdate=x.date)

Примечания:

1) Структура таблицы
m - char
price - int
Date - datetime

2)Table4 - имя таблицы, подставить своё имя таблицы
3) x - псевдоним таблицы, может быть что угодно
4) m - название материала, по нему выбирается только одна запись
5) Date- поле типа datetime? выбирается максимальное, квадратные скобки не нужны, просто надо поставить реальное имя поля
6) maxdate - псевдоним поля, можно поставить что угодно
7) y - псевдоним таблицы, может быть что угодно



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
x404
Дата 30.11.2003, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.11.2003

Репутация: нет
Всего: нет



Мне чуток другое надо. Я за сегодня набросал вот такое:

select
IM.id_im, IM.id_izdl1,IM.id_mat_n1,
MN.Naim_mat_n, MN.Size, MN.GOST, MN.Ed_izm, MN.Mass_n,

(select DISTINCT Price from Material where Naim_mat=Naim_mat_n and Size_m=Size) as Price,
Cost
from izd_mat IM
join Mat_norm MN on MN.id_mat_n=IM.id_mat_n1
where type=1 and id_izdl1=:Izdel.id_izdel

Но когда начинаю открывать этот запрос, то выскакивает сообщение, что запрос не может возвращать более одного результата. Я че не там distinct воткнул, так вроде мне в других местах и надо. даты пока не делал мне бы с этим для начала разобраться.
Используется TAdoDataSet. А база делается с использованием Sybase.
PM MAIL WWW ICQ Skype   Вверх
Vit
Дата 1.12.2003, 05:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата
Мне чуток другое надо. Я за сегодня набросал вот такое:


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


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vit
Дата 1.12.2003, 05:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



PS. Sybase удобная база данных, можно сделать например парочку вложенных view и суммарную кверю на них, коли за одну кверю не можешь отхватить всю нужную информацию...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
x404
Дата 4.12.2003, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.11.2003

Репутация: нет
Всего: нет



Спасибо за совет. Я видимо немного протормозил. Вообщем все заработало.
Оказалось, что и дата может быть в полях одинакова и поэтому пришлось искать новый путь. Теперь вместо даты внесения использую id материала.
А SQL выглядит так:
select
IM.id_im, IM.id_izdl1,IM.id_mat_n1,
MN.Naim_mat_n, MN.Size, MN.GOST, MN.Ed_izm, MN.Mass_n,
(select max(id_mat) from Material where Naim_mat=Naim_mat_n and Size_m=Size) as maxid, тут отбирается максимальный id
(select Price from Material where Naim_mat=Naim_mat_n and Size_m=Size and id_mat=maxid) as Price, а тут по найденному id отбирается цена на метериал
(Price*MN.Mass_n) as Cost
from izd_mat IM
join Mat_norm MN on MN.id_mat_n=IM.id_mat_n1
where type=1 and id_izdl1=:Izdel.id_izdel

PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.