Текущий архив: 2007.09.16;
Скачать: CL | DM;
ВнизНаписать SQL-запрос, осуществляющий выборку из 2-х таблиц. Найти похожие ветки
← →
КрЫска © (2007-05-18 01:12) [0]Здравствуйте! Подскажите как написать 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 03:59) [1]А СУБД указать слабо?
← →
novoalex © (2007-05-18 08:11) [2]
> КрЫска © (18.05.07 01:12)
Индивидуальный идентификатор присутствует в Adres ?
← →
Sergey13 © (2007-05-18 08:33) [3]> [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:36) [4]
> 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))
← →
novoalex © (2007-05-18 13:12) [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))
← →
Павел Калугин © (2007-05-18 13:28) [6]> [5] novoalex © (18.05.07 13:12)
не in а =
см [3] Sergey13 © (18.05.07 08:33)
← →
Кщд © (2007-05-18 13:28) [7]novoalex © (18.05.07 13:12) [5]
как Вы думаете, как долго будет выполняться Ваш запрос, например, на таблице-миллионнике?)
← →
КрЫска © (2007-05-18 13:59) [8]Вопрос оч даже хороший, ну просто замечтательный :). Сегодня и проверю.
Спасибо всем, надеюсь получится ;)
← →
КрЫска © (2007-05-18 23:28) [9]ЕщЁ раз всем огромное спасибо! Все получилось (просто все гениальное - просто!)! :D
Страницы: 1 вся ветка
Текущий архив: 2007.09.16;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.053 c