Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Написать SQL-запрос, осуществляющий выборку из 2-х таблиц. [D7]


КрЫска ©   (2007-05-18 01:12:00) 

Здравствуйте! Подскажите как написать SQL-запрос, осуществляющий выборку из 2-х таблиц. Таблицы содержат информацию такого вида:

Табл. Chel.

Number | Fam    | Imya
______________________________
101    |Иванов   |Иван
102    |Петров   |Петр
103    |Сидоров |Сидор

Табл. Adres

Number| Adr                              | Date_Save
________________________________________________________
101    |Москва,...                        |12.03.1998
101    |Санкт-Петербург               |30.10.2000
101    |Москва,...                        |01.04.2006
102    |Саратов, ул. Такая-то, д.1 |12.03.1998
102    |Саратов, ул. Такая-то, д.1 |30.10.2000
103    |г.Киров                            |30.10.2000
103    |Киров                              |15.06.2001
103    |Киров, пр. им...., д.2         |10.12.2005

В табл. Adres записи с одним и тем же значением поля Number отличаются датой сохранения, но могут совпадать в других полях.
В табл. Chel поле Number ключевое и объединение строк осуществляется по нему.
При этом в результирующую таблицу нужно выдавать не все записи из табл. Adres соответствующие одному значению поля Number,а только запись, сохраненную последней. Т.е. в результате запроса к этим 2-м таблицам должен быть такой результат:

Number | Fam     | Imya| Adr                                | Date_Save
________________________________________________________
101    |Иванов   |Иван |Москва,...                        |01.04.2006
102    |Петров   |Петр  |Саратов, ул. Такая-то, д.1 |30.10.2000
103    |Сидоров |Сидор|Киров, пр. им...., д.2          |10.12.2005

Ну вот и все... :(

Заранее спасибо.


КрЫска   (2007-05-18 23:28:00) [1]

ЕщЁ раз всем огромное спасибо! Все получилось (просто все гениальное - просто!)!  :D


КрЫска   (2007-05-18 13:59:00) [2]

Вопрос оч даже хороший, ну просто замечтательный :). Сегодня и проверю.
Спасибо всем, надеюсь получится ;)


Павел Калугин   (2007-05-18 13:28:00) [3]

> [5] novoalex ©   (18.05.07 13:12)

не in а =
см [3] Sergey13 ©   (18.05.07 08:33)


Кщд   (2007-05-18 13:28:00) [4]

novoalex ©   (18.05.07 13:12) [5]
как Вы думаете, как долго будет выполняться Ваш запрос, например, на таблице-миллионнике?)


novoalex   (2007-05-18 13:12:00) [5]


> novoalex ©   (18.05.07 08:36) [4]

В принципе если поле Date_Saveсодержит значение времени занесения строки в таблицу Adres, то Idможно заменить на Date_Save.

WHERE     (Date_Save IN
                        (SELECT     MAX(Date_Save) AS Date_Save
                          FROM          Adres dd
                          WHERE      tt.Number = dd.Number))


novoalex   (2007-05-18 08:36:00) [6]


> novoalex ©   (18.05.07 08:11) [2]

Если есть то:


SELECT     tt.Number, Chel.Fam, Chel.Imya, tt.Adr, tt.Data_Save
FROM         Adres tt INNER JOIN
                     Chel ON tt.Number = Chel.Number
WHERE     (Id IN
                         (SELECT     MAX(Id) AS Id
                           FROM          Adres dd
                           WHERE      tt.Number = dd.Number))


Sergey13   (2007-05-18 08:33:00) [7]

> [0] КрЫска ©   (18.05.07 01:12)

Общая идея такая
select * from chel c,adres a
where c.number=a.number and a.data_save=(select max(data_save) from adres a1 where a1.number=c.c.number)


novoalex   (2007-05-18 08:11:00) [8]


> КрЫска ©   (18.05.07 01:12)

Индивидуальный идентификатор присутствует в Adres ?


ЮЮ   (2007-05-18 03:59:00) [9]

А СУБД указать слабо?


Наверх

Титульная страница Поиск, карта сайта Написать письмо