Имя: Пароль:
1C
 
Вопрос по SQL
0 lanc2233
 
30.04.18
13:10
INSERT INTO product
(code,brand_id,name)
VALUES('1', Ид бренда ,'test',)

Чтобы получить Ид бренда, нужно выполнить

Select brand_id from brands where name = 'some_brand'

Можно ли это сделать одним запросом ?
1 shuhard
 
30.04.18
13:11
(0) угу
2 youalex
 
30.04.18
13:16
(0) ты уже все написал)
3 shuhard
 
30.04.18
13:19
(2) =)
4 lanc2233
 
30.04.18
13:20
Че просто, вместо Ид бренда Селект подставить?

А что будет если ошибка в базе, и две строки с таким наименованием?
5 youalex
 
30.04.18
13:22
(4) вместо values
6 youalex
 
30.04.18
13:29
хотя, можно и вместо ид, как-то так:
insert into @b(f1, f2)
values ((select top 1 f1 from @a), 8)
7 rphosts
 
30.04.18
14:29
(4) бери максимум (или минимум)
8 youalex
 
30.04.18
16:27
(4) >>А что будет если ошибка в базе, и две строки с таким наименованием?

это, на самом деле, такой вопрос.  Ты можешь обойти эту ошибку через TOP1, или, как в (7) - через агрегатную функцию.

С одной стороны, ты обойдешь ошибку, и она не будет выскакивать. С другой стороны, может быть,  лучше она сразу выскочит, чем ты допустишь неопределенность(случайность)  результата со всеми вытекающими.
9 lanc2233
 
30.04.18
17:14
Спасибо
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.