Нужна помощь с запросом

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 14.08.2006 (Пн) 12:55

А если остальные поля отличаются?
Лучший способ понять что-то самому — объяснить это другому.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.08.2006 (Пн) 13:20

Summer.05 писал(а):Однако, замысел был иной.
Надо, чтобы запрос выбрал неповторяющиеся записи по полю Title (как это сейчас), но перенес их в таблицу TMP со всеми остальными полями, которые идентичны для обеих таблиц (например, Name, Rank,Number,City,Year)

У тебя неправильный замысел.
Допустим, у тебя есть две записи, с одинаковым Title, но разными остальными полями. По каким критериям ты выберешь, какую из двух записей добавить в таблицу?
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 14.08.2006 (Пн) 13:46

выполни это запрос и посмотри это то , что тебе нужно или нет :lol:

Код: Выделить всё
SELECT
  MIN(Name) AS Name,
  MIN(Rank) AS Rank,
  MIN([Number]) AS [Number],
  MIN(City) AS City,
  MIN([Year]) AS [Year],
  Title
FROM tblPedagog
GROUP BY Title

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 14.08.2006 (Пн) 18:48

alibek
Спасибо за внимание!
Дело в том, что все остальные поля, кроме Title, вполне могут повторяться. И пусть, мне это не важно. В конце концов пять Ивановых Иванов Ивановичей защитили кандидатские диссертации, все в Москве и все в одном году. Но ТЕМЫ-то у них разные. Вот по темам (Title) и нужно мне убрать дублирование тем, так как при формировании базы в Access я соединил несколько разных таблиц и попало туда несколько тысяч сдублированных записей. Различить я могу их только по Title, но надо, чтобы в таблице остались не дублированные диссертации со всеми их полями. Я смог провести эту работу и получил список не дублированных диссертаций, но вывод их в таблицу произошел только по одному полю. Все остальные поля оказались пустыми. Как вывести недублированные записи со всеми их полями - в этом моя проблема.
Спасибо, извините, что так долго.

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 14.08.2006 (Пн) 20:41

With Adodc1
.RecordSource = "INSERT INTO TMP (Name,Rank, Number, Place, City, Year) SELECT Name, Rank, Number, Place, City, Year FROM tblPedagog"
.Refresh
End With

Вывод: ошибка синтаксиса в INSERT INTO

Перебрал много вариантов, сравнивал по сборнику советов. Вроде все правильно, а ошибка не исчезает...
Где она, кто знает?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.08.2006 (Пн) 20:44

Year - название функции access... name тоже может... поэтому возьми их в квадратные скобки.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 14.08.2006 (Пн) 20:45

Konst_One
Dim strPath As String
strPath = App.Path & "/" & "DB/dbped.mdb"
Dim SQL As String
MousePointer = 11
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;Data Source=" & strPath & _
"; Mode=Read|Write"


SQL = "SELECT MIN(Name) AS Name, MIN(Rank) AS Rank, MIN([Number]) AS [Number], MIN(City) AS City, MIN([Year]) AS [Year], Title From tblPedagog GROUP BY Title"
cn.Execute SQL

Ошибка: Operation not allowed when the object is closed

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 14.08.2006 (Пн) 20:47

GSerg
Вот это замечание... Спасибо, не подумал!
Попробовал.
Ответ тот же: ошибка синтаксиса в INSERT INTO...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.08.2006 (Вт) 11:43

а кто за тебя коннект к базе будет открывать :shock:

Код: Выделить всё
cn.Open

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.08.2006 (Вт) 11:44

http://bbs.vbstreets.ru/viewtopic.php?p=6624287#6624287

выполнить я предлагал в каком-нибудь средстве для выполнения запросов к базе, например в QA

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 15.08.2006 (Вт) 12:56

Konst_One
Спасибо тебе, друг, ты много внимания мне уделил!
Я открыл базу, она отработала. Вероятно, изменения произошли где-то. А куда выводить-то результаты и как?
Не сердись, я в SQL вообще профан. Несколько месяцев как сел за VB...

Пред.

Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 1

    TopList