2015-09-03 5 views
1

Поэтому в основном мне нужно совместить это:Объединяя INSERT INTO ж/VALUE и SELECT + INNER JOIN

INSERT INTO order(B_DATUM, orderNR, L_DATUM) 
VALUES ('1999-04-23', '0205', DATE_ADD('1999-04-23', INTERVAL 7 DAY)) 

с этим:

INSERT INTO bestel(BEDRAG) 
SELECT 0.92*SUM(bestreg.aantal * bestreg.best_pr) 
FROM bestreg 
INNER JOIN bestel ON bestreg.bestelnr = bestel.bestelnr 
WHERE bestel.bestelnr = '0205' 

&

INSERT INTO order(lev_code) 
SELECT offertes.lev_code FROM order 
INNER JOIN (orderreg INNER JOIN offertes 
ON orderreg.art_lev = offertes.art_lev) 
ON orderreg.bestelnr = order.ordernr 
WHERE order.ordernr = '0205' 

Я читал в предыдущих вопросах, что вы должны разместить VALUES внутри SELECT, но как только я доберусь до INNER JOIN, он держит m эссе.

Спасибо заранее!

+0

В чем разница между первыми двумя запросами? – Lali

+0

Я думаю, вы хотите, чтобы вы хотели что-то вроде этого: 'INSERT INTO my_table (SELECT x, y, z, '1994-01-01' + INTERVAL 7 DAY FROM где-то)' – Strawberry

+0

@Lali - Хорошая точка, скопируйте в скорую и оставил (решающую) часть. Спасибо за замедление! –

ответ

0

решение ANSI SQL, не уверен, если MySQL поддерживает его:

INSERT INTO order(B_DATUM, orderNR, L_DATUM) 
VALUES ('1999-04-23', '0205', DATE_ADD('1999-04-23', INTERVAL 7 DAY)) 
union all 
VALUES ('1999-04-23', '0205', DATE_ADD('1999-04-23', INTERVAL 7 DAY)) 
union all 
SELECT offertes.lev_code FROM order 
INNER JOIN (orderreg INNER JOIN offertes 
ON orderreg.art_lev = offertes.art_lev) 
ON orderreg.bestelnr = order.ordernr 
WHERE order.ordernr = '0205' 

BTW, ORDER является зарезервированным словом в ANSI SQL, вам может понадобиться delmit его, как "order" или, возможно, с обратными клещами.

+0

Я думаю, что этот запрос не будет запущен, синтаксис beacuse join не подходит. –

+0

Синтаксис - это ANSI SQL правильно. Я не знаю MySQL, но как его исправить? – jarlh

+0

Ну, я не знаю этого, что это также правильный синтаксис. Спасибо, что обновил меня. –

0

Вы можете просто попробовать это: -

INSERT INTO order(B_DATUM, orderNR, L_DATUM, lev_code) 
SELECT ('1999-04-23', '0205', DATE_ADD('1999-04-23', INTERVAL 7 DAY), SELECT offertes.lev_code FROM order 
                     INNER JOIN orderreg ON orderreg.bestelnr = order.ordernr 
                     INNER JOIN offertes ON orderreg.art_lev = offertes.art_lev 
                     WHERE order.ordernr = '0205') 
+0

Привет, используя VALUE + SELECT дает синтаксическую ошибку в mysql (по крайней мере, в phpmyadmin). Спасибо, что! –

+0

Попробуйте этот запрос сейчас. –

0

Так что я все пытался и получил эту работу в конце концов (MYSQL):

 INSERT INTO order(B_DATUM, orderNR, L_DATUM , bedrag, lev_code) 
     SELECT '1999-04-23', '0205', 
     DATE_ADD('1999-04-23', INTERVAL 7 DAY), 
     0.92*SUM(bestreg.aantal * bestreg.best_pr), offertes.lev_code 
     FROM order INNER JOIN (bestreg INNER JOIN offertes 
     ON bestreg.art_lev = offertes.art_lev) ON bestreg.ordernr = order.ordernr 
     WHERE order.ordernr = '0205' 

Предыдущие ответы на подобные вопросы были Правоустанавливающие вы используете VALUES в SELECT и просто отмените оператор VALUES.

Спасибо за комментарии & ответов!