Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.006 c
14-9626
Geser
2002-02-22 16:02
2002.04.04
Самый БОЛЬШОЙ проект, которым вы занимались...


1-9485
USAtyj
2002-03-25 18:19
2002.04.04
Идею не подскажете!?


4-9669
sanjok
2002-02-02 21:23
2002.04.04
Как запустить внешнее приложение из своей программы


1-9517
FoxerMoxer
2002-03-22 20:11
2002.04.04
Мне нужна помощь


4-9687
Vaddya
2002-01-29 23:19
2002.04.04
Создание GroupBox




   Наверх