Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
1-9431
koks
2002-03-22 09:30
2002.04.04
перерисовка MainForm


3-9380
vopros
2002-03-12 13:48
2002.04.04
Глупый вопрос...Как по Lookup полю в таблице сделать сортровку?


3-9421
VladimirTU
2002-03-13 14:43
2002.04.04
Как в ActiveX написанный в Delphi передать коннект


14-9642
fliz
2002-02-21 14:53
2002.04.04
у кого в каком возрасте зуб мудрости вылез?


1-9520
snoup
2002-03-23 09:14
2002.04.04
Кидаю на форму TEdit и кнопку в OnButtonClick пишу: Shellexecute(handle,nil, edit1.text ,nil,nil,SW_SHow);





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский