-1

私はこのようなことをしたい:

QSqlQuery q;
q.prepare("insert into Norm values(select from Disc id_disc WHERE name_disc=?, select from Spec code_spec WHERE name_spec=?,?");
q.addBindValue(MainModel->data(MainModel->index(MainModel->rowCount()-1, 1)).toString());
q.addBindValue(ui->comboBox->currentText());
q.addBindValue(MainModel->data(MainModel->index(MainModel->rowCount()-1, 2)).toString());
q.exec();

しかし、それは機能していません。確かに、明らかにエラーがどこにあるのか、おそらく彼はそれを正しく行う方法を教えてくれます。

4

3 に答える 3

1

まず第一に、あなたはスペルミスをしました。「INSERT」ではなく「INSERT」です。はい、INSERT クエリ内に SELECT クエリを挿入できます。例えば:

INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
于 2013-11-27T08:06:16.387 に答える
1

INSERT ... SELECT ...複数のレコードを挿入する場合、または挿入するほとんどの値が同じレコードからのものである場合に使用します。

複数のテーブルからの値を含む 1 つのレコードを挿入する場合は、試みたようにサブクエリを使用できますが、正しい構文を使用する 必要があります。スカラー サブクエリは括弧内に記述する必要があり、SELECTを次のように正しく記述する必要がありSELECT value FROM tableます。

INSERT INTO Norm
VALUES ((SELECT id_disc FROM Disc WHERE name_disc = ?),
        (SELECT code_spec FROM Spec WHERE name_spec = ?),
        ?)
于 2013-11-27T08:51:07.450 に答える