0

私はこれを試したことがないので、それが間違っているかどうかはわかりません。

INSERT INTO produits(produit_id, fournisseur_id, marque_id, categorie_id,produit_nom,
                     produit_prix, produit_description, quantite_stock,
                     date_production, date_expiration)
    VALUES (seq_produits.nextval,
            SELECT fournisseur_id FROM fournisseurs WHERE fournisseur_nom='LebanoCop',
            SELECT marque_id FROM marques WHERE marque_nom='Hyper-Products',
            SELECT categorie_id FROM categories WHERE categorie_nom='viandes',
            'Mortadella', 2000, 'tres delicieuse', 100, '25-MAY-2012', '25-MAY-2013')

これは機能しますか?式が欠落しているというエラーが表示されます。オラクルを使用しています。

4

1 に答える 1

0

3 つのサブクエリのそれぞれからのシングルトン結果となる 3 つの選択された値が必要なようです。動作するはずの表記法は次のとおりだと思います。

INSERT INTO produits(produit_id, fournisseur_id, marque_id, categorie_id,produit_nom,
                     produit_prix, produit_description, quantite_stock,
                     date_production, date_expiration)
   VALUES (seq_produits.nextval,
           (SELECT fournisseur_id FROM fournisseurs WHERE fournisseur_nom='LebanoCop'),
           (SELECT marque_id FROM marques WHERE marque_nom='Hyper-Products'),
           (SELECT categorie_id FROM categories WHERE categorie_nom='viandes'),
           'Mortadella', 2000, 'tres delicieuse', 100, '25-MAY-2012', '25-MAY-2013')

元の SQL と比較して、各サブクエリを囲む追加の括弧のセットが必要です。これにより、結合できない結果セットを結合する際の問題が回避されます。

挿入する可能性のある多数の行を選択しようとしている一般的なケースでは、VALUES 句をまったく使用せず、INSERT 列リストの後に SELECT ステートメントを単にリストします。

INSERT INTO produits(produit_id, ...)
    SELECT ...
于 2012-06-03T19:15:19.923 に答える