首先,我看到了一些接近這個問題的答案,但它不起作用。這就是為什么我創建了一個新問題,這里是規范:
我創建了兩個表:
CREATE TABLE car_info (
id int PRIMARY KEY AUTO_INCREMENT NOT NULL,
mileage int,
make varchar(100),
model varchar(100),
fuel varchar(100),
gear varchar(100),
offertype varchar(100)
);
CREATE TABLE sales_info (
id int PRIMARY KEY AUTO_INCREMENT NOT NULL,
FOREIGN KEY(id) REFERENCES car_info(id),
price int,
hp int,
year int
);
我加入了這兩個:
select *
from (SELECT *
FROM car_info
) as a
left outer join (SELECT *
FROM sales_info
) as b on a.id = b.id
union
select *
from (SELECT *
FROM car_info
) as a
right outer join (SELECT *
FROM sales_info
) as b on a.id = b.id;
如您所見, id 是這里的公共變數。這里是 car_info 表:
----------- -------------- ------ ----- --------- ----------------
| Field | Type | Null | Key | Default | Extra |
----------- -------------- ------ ----- --------- ----------------
| id | int | NO | PRI | NULL | auto_increment |
| mileage | int | YES | | NULL | |
| make | varchar(100) | YES | | NULL | |
| model | varchar(100) | YES | | NULL | |
| fuel | varchar(100) | YES | | NULL | |
| gear | varchar(100) | YES | | NULL | |
| offertype | varchar(100) | YES | | NULL | |
----------- -------------- ------ ----- --------- ----------------
這里是 sales_info 表:
------- ------ ------ ----- --------- ----------------
| Field | Type | Null | Key | Default | Extra |
------- ------ ------ ----- --------- ----------------
| id | int | NO | PRI | NULL | auto_increment |
| price | int | YES | | NULL | |
| hp | int | YES | | NULL | |
| year | int | YES | | NULL | |
------- ------ ------ ----- --------- ----------------
這是我通常用來在單個表中匯入 SQL 資料的代碼:
app.post('/save', (req, res) => {
let data = { mileage: req.body.mileage, make: req.body.make, model: req.body.model, fuel: req.body.fuel, gear: req.body.gear, offertype: req.body.offertype };
let sql = "INSERT INTO car_info SET ?";
let query = connection.query(sql, data, (err, result) => {
if (err) throw err;
res.redirect('/');
});
});
當我使用此代碼并從表單中呼叫它時,它可以完美運行。但是,我想要做的是,我想從表單中呼叫此代碼并將兩個表匯入到相關資訊中,例如:
app.post('/save', (req, res) => {
let data = { mileage: req.body.mileage, make: req.body.make, model: req.body.model, fuel: req.body.fuel, gear: req.body.gear, offertype: req.body.offertype, price: req.body.price, hp: req.body.hp, year: req.body.year };
let sql = "**car_info and sales_info tables code here**";
let query = connection.query(sql, data, (err, result) => {
if (err) throw err;
res.redirect('/');
});
});
最后,我嘗試了類似的方法:
let sql = `INSERT INTO car_info
(mileage, make, model, fuel, gear, offertype)
VALUES('${req.body.mileage}', '${req.body.make}',
'${req.body.model}', '${req.body.fuel}',
'${req.body.gear}', '${req.body.offertype}');
INSERT INTO sales_info
(price, hp, year)
VALUES('${req.body.price}', '${req.body.hp}',
'${req.body.year}');`
但這里的問題是,它只在 car_info 中插入資料,而不在 sales_info 中插入資料,盡管我在相關欄位中輸入了一些值。
我希望這個問題很清楚,我怎樣才能做到這一點?
uj5u.com熱心網友回復:
由于您的兩個表具有不同的列,我建議您在兩個不同的變數中創建兩個查詢,然后相應地插入從req.body表中收集的資料。
app.post('/save', (req, res) => {
const { milage, make, model, fuel, gear, offertype, price, hp, year } = req.body //Destructured object
const car_info_query = `INSERT into car_info VALUES (?,?,?,?,?,?)`
const sales_info_query = `INSERT into sales_info VALUES (?, ?, ?)`
let write_car_info = connection.query(car_info_query, [milage, make, model, fuel, gear, offertype] , (err, result) => {
if (err) throw err;
});
let write_sales_info = connection.query(sales_info_query, [price, hp, year], (err, result) => {
if (err) throw err
})
//Insert into as many tables as you want
res.redirect('/');
});
uj5u.com熱心網友回復:
按照@jkalandarov 的回答,我解決了這個問題。這里的主要問題是 id 是外鍵的 sales_info 的關系。但最后,它解決了:)
這是我的最終代碼:
app.post('/save', (req, res) => {
let car_info_data = { mileage: req.body.mileage, make: req.body.make, model: req.body.model, fuel: req.body.fuel, gear: req.body.gear, offertype: req.body.offertype };
let sales_info_data = { price: req.body.price, hp: req.body.hp, year: req.body.year };
const car_info_query = 'INSERT into car_info SET ? ';
const sales_info_query = 'INSERT into sales_info SET ?';
let write_car_info = connection.query(car_info_query, car_info_data, (err, result) => {
if (err) throw err;
});
let write_sales_info = connection.query(sales_info_query, sales_info_data, (err, result) => {
if (err) throw err;
})
//Insert into as many tables as you want
res.redirect('/');
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/405865.html
標籤:
下一篇:如何在VisualStudio2019中使用Xamarin.Android阻止對Android中某些網頁的訪問?
