![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 02.07.2009
Сообщений: 2
|
![]()
Исходная:
есть таблица price_supplier: Код:
Код:
price_supplier - Таблица наличия товара у данного поставщика. Для каждого из поставщиков существует отдельная таблица с именем price_<поставщик>. td_avail - таблица наличия товаров у всех поставщиков. Товары идентифицируются парой (orphan,partnum) Задача: Известно сразу - поставщик supplier='какойто поставщик' Если товар (orphan,partnum,supplier) есть в таблице price_supplier и в таблице td_avail -> обновить данные о товаре из таблицы price_supplier в таблице td_avail для данного поставщика Если товар (orphan,partnum,supplier) есть в таблице price_supplier но нету в td_avail - > добавить товар (orphan,partnum,supplier,descriptio n...) в таблицу td_avail Если товар (orphan,partnum,supplier) есть в таблице td_aval, но нету в таблице price_supplier -> удалить товар (orpha,partnum,supplier) из таблицы td_avail Интересует не решение "в лоб", а как это сделать в один запрос? рыл в сторону MERGE ничего не нарыл по последнему пункту. в ответах желательно диалект TSQL для MSSQL 2000 |
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 15.06.2008
Сообщений: 271
|
![]() Цитата:
![]() ИМХО, здесь лучше начинать не с написания запросов, а с перепроектирования БД. В противном случае при сравнении полей двух таблиц (особенно, если поля еще и строковые), да и если при этом еще учесть, что вам нужно сравнивать, по-видимому, кучу таблиц, то в данном случае запросто можно схлопотать серьезное снижение производительности. А оно вам надо? |
|
![]() |
![]() |
![]() |
#3 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]()
именно что мердж и будет нужен только для 1го и 2го пунктов
а удалить уж вторым запросом З.Ы.: а так конечно странно, раз уж структура данных одинакова для всех поставщиков, то с какой целью заводили столько таблиц?! достаточно всего 3х таблиц - td_availб price_supplier (с добавлением ссылки на самого поставщика), собсна сама таблица с поставщиками |
![]() |
![]() |
![]() |
#4 | |
Новичок
Джуниор
Регистрация: 02.07.2009
Сообщений: 2
|
![]() Цитата:
Я бы с превеликим удовольствием изменил структуру "под себя", но анализировать тысячи строк чужого кода у меня нет ни желания, ни возможности. soleil@mmc спасибо, я всетаки думал мердж может побольше немножко ![]() Ну не судьба значит "за один раз" |
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 13.07.2009
Сообщений: 4
|
![]()
Существует форма для поиска по бд. В форме 4 параметра. Как написать запрос, чтобы в том случае если выбран один параметр, а другие 3 не тронуты, поиск все равно велся.
Я написала так: Код SQL: |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 01.03.2008
Сообщений: 165
|
![]()
Если правильно Вас понял, то примерно вот так (тут только для 3-х полей, но думаю разберетесь):
Код:
RG1 - RadioGroup(по точному совпадению искать или по частичному) |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Просто не понимаю б чём проблема!!!!!!!(char* && index) | artush1984 | Общие вопросы C/C++ | 12 | 30.05.2009 03:30 |
insert и update | Tanusha | SQL, базы данных | 4 | 13.03.2009 14:47 |
Проблема с MVC++ 2005 && 2008 на висте | NetGod | Софт | 1 | 09.08.2008 17:14 |
Delphi & Access & Ole | vodila | БД в Delphi | 0 | 15.07.2008 11:11 |
помгите! string Copy & Delete | Димарик | Общие вопросы Delphi | 4 | 05.11.2007 14:11 |