Главная страница
    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.004 c
1-9521
wal
2002-03-22 14:40
2002.04.04
---|Ветка была без названия|---


1-9463
Mummi
2002-03-25 14:48
2002.04.04
В ячейке StringGrida есть слово. Как узнать в какой позиции слова стоит курсор? (типа свойства SelStart)


4-9670
Yonic
2002-02-04 01:22
2002.04.04
Сообщения ListBox у


3-9386
Го-го
2002-03-12 17:16
2002.04.04
Формат файла ADO


6-9595
SemFLY
2002-01-21 19:31
2002.04.04
Событие ClientSocketRead





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский