sadiavatar Ответов: 1

Как я могу вставить в таблицу значения из нескольких запросов


Я пытаюсь вставить временную таблицу формы значения с несколькими запросами, но не могу этого сделать.
DROP TEMPORARY TABLE IF EXISTS temp; CREATE TEMPORARY TABLE IF NOT EXISTS temp SELECT s.roll, s.name, s.code, f.amount FROM fee f INNER JOIN students s ON s.code = f.code WHERE NOT EXISTS (SELECT 1 FROM fee f1 WHERE f1.code = f.code AND STR_TO_DATE(f1.datenewfee, '%d-%M-%Y') > STR_TO_DATE(f.datenewfee, '%d-%M-%Y')) AND s.status = 1 AND s.roll <> '' AND s.institution = 'tec'; SELECT t.roll, t.name, t.code, t.amount - IFNULL(d.amount, 0) as amount, 'tec', 'kahhar' FROM discount d RIGHT JOIN temp t ON t.roll = d.roll GROUP BY t.roll;


Что я уже пробовал:

INSERT INTO receivable (roll, name, month, code, amount, institution, created_by); 
DROP TEMPORARY TABLE IF EXISTS temp; 
CREATE TEMPORARY TABLE IF NOT EXISTS temp 

SELECT s.roll, s.name, s.code, f.amount 
  FROM fee f INNER JOIN students s ON s.code = f.code 
  WHERE NOT EXISTS (SELECT 1 FROM fee f1 WHERE f1.code = f.code AND 
  STR_TO_DATE(f1.datenewfee, '%d-%M-%Y') > STR_TO_DATE(f.datenewfee, '%d-%M-%Y')) 
  AND s.status = 1 AND s.roll <> '' AND s.institution = 'tec'; 

SELECT t.roll, t.name, t.code, t.amount - IFNULL(d.amount, 0) as amount, 'tec', 'kahhar' 
  FROM discount d RIGHT JOIN temp t ON t.roll = d.roll GROUP BY t.roll;

MadMyche

Могу ли я предложить форматировать ваш код, а также добавить то, что происходит, когда вы пытаетесь выполнить это

1 Ответов

Рейтинг:
0

RickZeeland

Первое утверждение-это пропущенные значения:

INSERT INTO receivable (roll, name, month, ...); 

Это должно быть что-то вроде:
INSERT INTO receivable (roll, name, month, ...) VALUES (value1, value2, value3, ...); 

Для получения дополнительной информации см.: SQL INSERT INTO оператор[^]
Я рекомендую немного попрактиковаться, используя кнопку "попробуйте сами".

Но то, что вы, вероятно, хотите использовать, это: SQL INSERT INTO SELECT оператор[^]