![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Inner Join в Interbase [D6, IB6.x]
Vemer © (2003-10-19 19:34:00)
Здравствуйте.
Есть ли в Ibase SQL-команда, подобная Access:овскому Inner Join.
Хочется из одной базы в другую обновление количества товаров
одной SQL командой перекинуть, а не перебором строк.
Следующий запрос почему-то поля, которые не подлежат обновлению в Null скидывает (X + Null неравно X?):
Update baza
Set baza.kolvo = baza.kolvo + (Select Kolvo From Privoz
Where Baza.pin = Privoz.PIN);
Sergey_Masloff (2003-10-22 15:40:00) [1]
Zacho © (22.10.03 08:53) [16]
>Оба ... А я и не знал.. У меня был медиакит IB 5.0, насколько >знаю и в 4.x были книги.. Так что, в печатном виде сейчас >документация к IB вообще не распространяется ?
Отдельно 50 USD и устанешь ждать пока доставят - очень долго. Мы собственно MediaKit ради книжек бумажных брали - все равно FB у нас. И тут такой облом...
Zacho (2003-10-22 08:53:00) [2]
> Sergey_Masloff (21.10.03 21:55) [15]
Оба ... А я и не знал.. У меня был медиакит IB 5.0, насколько знаю и в 4.x были книги.. Так что, в печатном виде сейчас документация к IB вообще не распространяется ?
Sergey_Masloff (2003-10-21 21:55:00) [3]
Zacho © (21.10.03 12:47) [14]
>Language Reference - одна из книг стандартной документации IB. >Поставляется в комплекте IB Media Kit, как в виде печатных книг,
Неправда ваша. Как обладатель лицензионной IB7 ответственно заявляю - печатной документации в MediaKit сейчас НЕТ! Было в 5.1 (5.6 кажется не продавался а распространялся владельцам 5.1) в 6 естественно не было - она бесплатная в 7 просто не предусмотрено.
Zacho (2003-10-21 12:47:00) [4]
> Vemer © (21.10.03 12:25) [13]
> Where iz Language Reference ?
Language Reference - одна из книг стандартной документации IB. Поставляется в комплекте IB Media Kit, как в виде печатных книг, так и на диске в виде .pdf
Ссылки на бета-версию документации для IB 6.0 и апдейта ее для 6.5 есть на http://www.ibase.ru
P.S. Imho, любому работающему с IB обязательно надо иметь под рукой как минимум Language Reference и Data Definition Guide.
Vemer (2003-10-21 12:25:00) [5]
To all.
Всем привет, всем спасибо, весь этот SQL заработал.
Щас буду добавлять очередной тупой вопрос про Locate.
(образование у меня сельскохозяйственное, вот и спотыкаюсь на простых вещах очевидных для других :))
To Zacho
Where iz Language Reference ? (inet, Delphi, Ibase, ...)
-----------------------------------------
ACCESS DENIED, Delphi recomended! (c)Vemer
Zacho (2003-10-21 08:17:00) [6]
2 Verner: почитай наконец Language Reference !
Select Pin, Name from Baza inner join Privoz
ONBaza.pin = Privoz.pin;
Кстати, указывать inner - не обязательно, просто join всегда будет внутренним, а left или right join всегда будет внешним (outer). Т.е. inner join == join, left outer join == left join
Vemer (2003-10-20 16:58:00) [7]
To Nikolai
Спасибо, сейчас попробуем.
Напишите пожалуйста, как вывести общие поля 2-х таблиц, а то вот эта конструкция не работает:
Select Pin, Name from Baza inner join Privoz
where Baza.pin = Privoz.pin;
To Dmtr
Shift нашел!
Контейнер создается из базы простым Select по выбору в другую таблицу. У меня проблемы с его запихиванием обратно :).
To All
Nikolay M. (2003-10-20 16:24:00) [8]
Сори, не сразу понял, что требуется от запроса. А так?
UPDATE baza
SET
baza.kolvo = baza.kolvo + (SELECT Kolvo FROM Privoz WHERE Baza.pin = Privoz.PIN)
WHERE Baza.pin IN (SELECT PIN FROM Privoz)
dmtr (2003-10-20 16:22:00) [9]
Т.е. в Privoz забивает кто-то другой ?
Vemer (2003-10-20 16:10:00) [10]
To Dmtr
Найди на клаве кнопку Shift.
Каждый месяц на склад поступает контейнер с одинаковым набором деталей, ассортимент около 2000. Состав контейнера забит в Privoz. При поступлении надо к Baza.kolvo прибавить Privoz.kolvo, но только для деталей которые в контейнере, а не набивать вручную.
dmtr (2003-10-20 15:52:00) [11]
Скажи, а зачем тебе таблица Privoz7
Vemer (2003-10-20 13:29:00) [12]
To Danilka
Если человек что-то утверждает, обычно это чем-то подкрепляется, в нашем случае это 1 SQL-строка для конкретного, приведенного в моем вопросе примера. А просто сказать "Типа есть/Типа нет" может всякий (не хочу никого обижать).
To all.
Вариант Николая не сработал. Напишите мне пожалуйста SQL-строчку для прибавления в Baza.Kolvo значений из Privoz.Kolvo когда Baza.ID = Privoz.ID, но чтобы другие строки Baza не затрагивались.
Zhouck (2003-10-20 12:22:00) [13]
>>Есть в IB inner join. Только нафига он тут?
Да потому что в SQL он есть.
В Ibase есть почти все команды SQL кроме всяких
minus,inrersect etc (множественные)
Danilka (2003-10-20 11:04:00) [14]
[3] Vemer © (20.10.03 10:57)
>А вариант/пример слабо кинуть разумеется.
Кто-же так требует пример? Надо не брать на слабо, а именно требовать, стучать кулаками, кричать на него что он обязан дать тебе код! Вот тогда, он извиниться за свое нехорошее поведение и приведет тебе примеры полностью готовой процедуры и программы.
Vemer (2003-10-20 10:57:00) [15]
To Nikolay
Спасибо за совет, буду пробовать.
Насчет названии - на Russkom я даю имена столбцам, а на английском - переменным, меньше путаницы. Притом Kolvo короче и понятнее для склада.
To Sergey_Masloff
А вариант/пример слабо кинуть разумеется.
Sergey_Masloff (2003-10-19 22:18:00) [16]
Есть в IB inner join. Только нафига он тут?
Nikolay M. (2003-10-19 20:14:00) [17]
> X + Null неравно X
Угу. X + Null = Null.
Добавь в подзапросе ...AND Privoz.Kolvo IS NOT NULL.
Да, и давай все-таки нормальные названия полям/таблицам: quantity, input, baze и тд, а то аж глаза такое режет... :(