crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Помогите составить SQL запрос, для сравнения таблиц
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2009, 9:01
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Есть две таблицы A и B, для простоты считаем, что в каждой таблице всего один столбец Value
Задача:
Необходимо дополнить таблицу B новыми записями из A
В A записи могут дублироваться, а в B дубликатов не должно быть.
Под задача:
найти в A все записи, которые еще не существуют в B


П.С. СУБД SQLite
Думал полное внешнее соединение сделать, для наглядности выборки, дак оно не поддерживается :(
А болше мыслей нет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2009, 10:11
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


пробовал такой запрос:
SELECT
    A.Value
FROM  A
    WHERE A.Value<>(SELECT B.Value FROM B);
но тогда из выборки исключается только первая запись возвращаемая подзапросом
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 9.4.2009, 10:23
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Litkevich Yuriy @ 9.4.2009, 11:11) *
пробовал такой запрос:
SELECT
    A.Value
FROM  A
    WHERE A.Value<>(SELECT B.Value FROM B);
но тогда из выборки исключается только первая запись возвращаемая подзапросом

А это надо сделать только с помощью SQL? Нельзя сделать с вкраплениями кода на С++, например?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2009, 10:34
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AD @ 9.4.2009, 14:23) *
А это надо сделать только с помощью SQL?
угу, это я софтину сделал, котарая так запускается:
sp plata_1_bot.bomdb UpdateRef.sql
т.е. я ей файл БД указваю и файл SQL-сценария, она его применяет к БД.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 9.4.2009, 10:48
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Ну тогда так: попробуй внедрить цикл, вроде бы в SQL он был. Должно помочь!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
panter_dsd
  опции профиля:
сообщение 9.4.2009, 11:28
Сообщение #6


Жаждущий знаний
***

Группа: Участник
Сообщений: 254
Регистрация: 1.1.2009
Из: Санкт-Петербург
Пользователь №: 474

Спасибо сказали: 32 раз(а)




Репутация:   3  


SELECT
    distinct A.Value
FROM  A
    WHERE NOT (A.Value IN (SELECT B.Value FROM B ))

С инсертом,думаю, сам разберешься.

Сообщение отредактировал panter_dsd - 9.4.2009, 11:32
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2009, 11:39
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


чёт не катит, и с distinct и без него :(
Результат запроса - пустота (ошибок нет)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
panter_dsd
  опции профиля:
сообщение 9.4.2009, 11:42
Сообщение #8


Жаждущий знаний
***

Группа: Участник
Сообщений: 254
Регистрация: 1.1.2009
Из: Санкт-Петербург
Пользователь №: 474

Спасибо сказали: 32 раз(а)




Репутация:   3  


Странно, а ну ка давай сюда немного содержимого обеих таблиц.

Сообщение отредактировал panter_dsd - 9.4.2009, 11:43
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2009, 11:45
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(panter_dsd @ 9.4.2009, 15:42) *
Странно, а ну ка давай сюда немного содержимого обеих таблиц.
да я их уже так переколбасил, что пожалуй начну процесс сначала, для надёги.

чуть позже отпишусь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
alex977
  опции профиля:
сообщение 9.4.2009, 11:51
Сообщение #10


Активный участник
***

Группа: Участник
Сообщений: 310
Регистрация: 19.6.2008
Из: Россия, МО, г.Мытищи
Пользователь №: 206

Спасибо сказали: 77 раз(а)




Репутация:   8  


С sqlite не работал, но в нашей БД вместо
WHERE NOT (A.Value IN (SELECT B.Value FROM B ))


используем такую строку:

WHERE (A.Value NOT IN (SELECT B.Value FROM B ))


Сообщение отредактировал alex977 - 9.4.2009, 11:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.12.2024, 17:38