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

Вниз

Inner Join в Interbase   Найти похожие ветки 

 
Vemer ©   (2003-10-19 19:34) [0]

Здравствуйте.
Есть ли в 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);


 
Nikolay M. ©   (2003-10-19 20:14) [1]


> X + Null неравно X

Угу. X + Null = Null.
Добавь в подзапросе ...AND Privoz.Kolvo IS NOT NULL.

Да, и давай все-таки нормальные названия полям/таблицам: quantity, input, baze и тд, а то аж глаза такое режет... :(


 
Sergey_Masloff   (2003-10-19 22:18) [2]

Есть в IB inner join. Только нафига он тут?


 
Vemer ©   (2003-10-20 10:57) [3]

To Nikolay
Спасибо за совет, буду пробовать.
Насчет названии - на Russkom я даю имена столбцам, а на английском - переменным, меньше путаницы. Притом Kolvo короче и понятнее для склада.

To Sergey_Masloff
А вариант/пример слабо кинуть разумеется.


 
Danilka ©   (2003-10-20 11:04) [4]

[3] Vemer © (20.10.03 10:57)
>А вариант/пример слабо кинуть разумеется.
Кто-же так требует пример? Надо не брать на слабо, а именно требовать, стучать кулаками, кричать на него что он обязан дать тебе код! Вот тогда, он извиниться за свое нехорошее поведение и приведет тебе примеры полностью готовой процедуры и программы.


 
Zhouck ©   (2003-10-20 12:22) [5]

>>Есть в IB inner join. Только нафига он тут?
Да потому что в SQL он есть.
В Ibase есть почти все команды SQL кроме всяких
minus,inrersect etc (множественные)


 
Vemer ©   (2003-10-20 13:29) [6]

To Danilka
Если человек что-то утверждает, обычно это чем-то подкрепляется, в нашем случае это 1 SQL-строка для конкретного, приведенного в моем вопросе примера. А просто сказать "Типа есть/Типа нет" может всякий (не хочу никого обижать).

To all.
Вариант Николая не сработал. Напишите мне пожалуйста SQL-строчку для прибавления в Baza.Kolvo значений из Privoz.Kolvo когда Baza.ID = Privoz.ID, но чтобы другие строки Baza не затрагивались.


 
dmtr ©   (2003-10-20 15:52) [7]

Скажи, а зачем тебе таблица Privoz7


 
Vemer ©   (2003-10-20 16:10) [8]

To Dmtr
Найди на клаве кнопку Shift.
Каждый месяц на склад поступает контейнер с одинаковым набором деталей, ассортимент около 2000. Состав контейнера забит в Privoz. При поступлении надо к Baza.kolvo прибавить Privoz.kolvo, но только для деталей которые в контейнере, а не набивать вручную.


 
dmtr ©   (2003-10-20 16:22) [9]

Т.е. в Privoz забивает кто-то другой ?


 
Nikolay M. ©   (2003-10-20 16:24) [10]

Сори, не сразу понял, что требуется от запроса. А так?
UPDATE baza
SET
baza.kolvo = baza.kolvo + (SELECT Kolvo FROM Privoz WHERE Baza.pin = Privoz.PIN)
WHERE Baza.pin IN (SELECT PIN FROM Privoz)


 
Vemer ©   (2003-10-20 16:58) [11]

To Nikolai
Спасибо, сейчас попробуем.
Напишите пожалуйста, как вывести общие поля 2-х таблиц, а то вот эта конструкция не работает:
Select Pin, Name from Baza inner join Privoz
where Baza.pin = Privoz.pin;


To Dmtr
Shift нашел!
Контейнер создается из базы простым Select по выбору в другую таблицу. У меня проблемы с его запихиванием обратно :).

To All


 
Zacho ©   (2003-10-21 08:17) [12]

2 Verner: почитай наконец Language Reference !
Select Pin, Name from Baza inner join Privoz
ON Baza.pin = Privoz.pin;

Кстати, указывать inner - не обязательно, просто join всегда будет внутренним, а left или right join всегда будет внешним (outer). Т.е. inner join == join, left outer join == left join


 
Vemer ©   (2003-10-21 12:25) [13]

To all.
Всем привет, всем спасибо, весь этот SQL заработал.
Щас буду добавлять очередной тупой вопрос про Locate.
(образование у меня сельскохозяйственное, вот и спотыкаюсь на простых вещах очевидных для других :))

To Zacho
Where iz Language Reference ? (inet, Delphi, Ibase, ...)

-----------------------------------------
ACCESS DENIED, Delphi recomended! (c)Vemer


 
Zacho ©   (2003-10-21 12:47) [14]


> 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.


 
Sergey_Masloff   (2003-10-21 21:55) [15]

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-22 08:53) [16]


> Sergey_Masloff (21.10.03 21:55) [15]

Оба ... А я и не знал.. У меня был медиакит IB 5.0, насколько знаю и в 4.x были книги.. Так что, в печатном виде сейчас документация к IB вообще не распространяется ?


 
Sergey_Masloff   (2003-10-22 15:40) [17]

Zacho © (22.10.03 08:53) [16]
>Оба ... А я и не знал.. У меня был медиакит IB 5.0, насколько >знаю и в 4.x были книги.. Так что, в печатном виде сейчас >документация к IB вообще не распространяется ?
Отдельно 50 USD и устанешь ждать пока доставят - очень долго. Мы собственно MediaKit ради книжек бумажных брали - все равно FB у нас. И тут такой облом...



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

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

Наверх




Память: 0.51 MB
Время: 0.045 c
1-41446
loki128
2003-10-29 08:48
2003.11.13
MapInfo


9-40777
Vasiliy
2003-05-10 21:13
2003.11.13
Как избавиться от мерцания окна при перерисовке


1-41638
Support
2003-10-26 01:01
2003.11.13
Как из чужой проги извлеч инфу


1-41607
Alex-21
2003-10-13 22:41
2003.11.13
SynEdit


1-41515
Артем
2003-10-25 22:22
2003.11.13
ShellExecute