Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.04;
Скачать: CL | DM;

Вниз

Вложенный запрос   Найти похожие ветки 

 
Shoo   (2002-03-11 12:16) [0]

Мастера, объясните, плз, каким образом можно получить dataset, состоящий из всех записей 1-ой таблицы, которых нет во 2-ой. пробовал 2-мя способами (ниже), но результат неверен. В SQL, увы, не силен.

1.
select * from t$bundles
where t$bundles.f$bbarkod not in
(select t$bundlesbak.f$bbarkod from t$bundlesbak)
2.
select * from t$bundles
where not exists
(select t$bundlesbak.f$bbarkod from t$bundlesbak where t$bundlesbak.f$bbarkod = t$bundles.f$bbarkod)


 
deleon   (2002-03-11 12:36) [1]

А по структуре таблицы идентичны ?


 
JibSkeart ©   (2002-03-11 12:38) [2]

SELECT A.*,B.MyField FROM Table1 a,Table2 b

а на твоем примере будет так

select A.*,B.f$bbarkod From t$bundles A,t$bundlesbak B
where B.f$bbarkod = A.f$bbarkod


Попробуй !!





 
Shoo   (2002-03-11 14:50) [3]

2JibSkeart:
Прошу прощения за задержку с ответом.
Если я правильно понял, твой запрос возвращает данные, которые есть в обоих таблицах, а мне нужны те, которые есть в первой, но нет во второй.


 
roottim   (2002-03-11 15:02) [4]

а может верен?
по скл в пр все нормально!...


 
JibSkeart ©   (2002-03-11 18:50) [5]

Ну может быть вам нужно было так ???

select A.* From t$bundles A,t$bundlesbak B
where B.f$bbarkod = A.f$bbarkod

Дело в том что вопрос не очень Понятен !!!


 
aus ©   (2002-03-11 18:56) [6]

Не понятно, чем не верен твой первый запрос, вроде все правильно, в чем ты видишь ошибку?


 
JibSkeart ©   (2002-03-11 19:02) [7]

Да нет ошибки ни в том ни в другом случае нету

Просто в первом случае
выводится все поля из первай таблички + одно поле из второй

а во втором
выводятся только поля из первой таблички, а из второй нет .

Вот и все !



 
roottim   (2002-03-12 08:43) [8]

2JibSkeart
> Просто в первом случае
> выводится все поля из первай таблички + одно поле из второй
это ты про свои случаи?

а если см авторские... то должно все работать
никакого + поле из второй - там нет...

вариант автору: накидать для эксперимента 2 одинаковые табл.. забить их должнгым образом, и проверить ваши скл запросы... выполнены они вполне грамотно



 
Shoo   (2002-03-12 09:10) [9]

2roottim:
Пришлось поковырять таблицы ручками, выяснилось следующее:
оказывается, совпадение должно быть не полностью по значениям полей, а по первым 30 символам (тип - строка). Идиотизм, конечно, полный. Есть ли какие соображения по этому поводу?
В таком виде (ниже) запрос вроде выполняется, но я жду уже более 20 мин и результата пока нет (кстати, в каждой таблице порядка 60-70 тыс. записей):
select * from t$bundles
where left(t$bundles.f$bbarkod, 30) not in
(select left(t$bundlesbak.f$bbarkod, 30) bbarkod from t$bundlesbak)


 
roottim   (2002-03-12 09:22) [10]

это все верно!... , а долго потому что сравнение идет на стороне клиента... и пока оно переработает все записи долго... 60-70 это не мало...
предложение тогда такое... сделать вид на стороне сервера... и пользоваться им... самый думаю рациональный способ...
посмотри только какие там функции выполнят операцию типа Left


 
Shoo   (2002-03-12 09:23) [11]

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

select * from t$bundles
where not exists
(select t$bundlesbak.f$bbarkod from t$bundlesbak
where left(t$bundlesbak.f$bbarkod, 30) = left(t$bundles.f$bbarkod, 30))


 
Shoo   (2002-03-12 09:32) [12]

Прошу прощения за маленькое дополнение. Последний приведенный мною запрос дает набор данных из порядка 8 тыс записей и отрабатывает на двух моих таблицах всего 5 секунд!



Страницы: 1 вся ветка

Текущий архив: 2002.04.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
3-9365
amamed_3071
2002-03-09 09:40
2002.04.04
AdoQuery Time Out expected Error


3-9413
tovSuhov
2002-03-11 09:27
2002.04.04
Понятие


1-9570
anod
2002-03-24 00:29
2002.04.04
StringGrid


1-9484
snoup
2002-03-25 19:57
2002.04.04
Как с помощью таймера и лебела сделать сикундомер?


1-9525
Alex_LG
2002-03-18 06:18
2002.04.04
Где взять исходники *.pas для стандартных юнитов Дельфи?