2016-09-10 5 views
2

次のSQL問合せは、VIEWの作成に使用すると、副問合せエラーの使用方法を示しています。これは、table2に存在しない値のtable1からCODEという名前のフィールドの値をフェッチすることです。また、table2のCODEのStatusが "ASSIGNED"または "SOLD"でない場合も同様です。mysqlの副問合せVIEW

SELECT S1.CODE 
FROM STOCK S1 
LEFT JOIN ( 
     SELECT t1.CODE 
     FROM STOCK t1 
     JOIN SALES t2 ON t2.CODE = t1.CODE 
     WHERE t2.STATUS IN ('Sold', 'Assigned')) S2 ON S2.CODE = S1.CODE 
WHERE S2.CODE IS NULL 

SQLクエリは、良好な出力を提供しているが、VIEWを作成するときに、これを使用することはできません。これを解決するのを手伝ってください。

+0

ビューはサブクエリを許可しません。別のビューとそのビューからクエリを作成できます。 –

+0

あなたは[link] http://stackoverflow.com/questions/8428641/views-select-contains-a-subquery-in-the-from-clause – SCC

答えて

1

良い情報を約MySQL Subqueries

あなたのクエリが動作しない理由は、あなたがのMySQL ビューにFROM句でサブクエリを持っていないできるということです。

あなたの要件を100%確実に理解できませんでしたが、あるテーブルから別のテーブルに存在しなかった行や別のテーブルに存在する可能性がありますが、特定のステータスを持つことはできませんでした。要件の私の理解がこのクエリよりも正しい場合、同じことを行います。これらは私が今作業しなければならなかったテーブルで、これはうまく動作することが確認されました。

私が要件に間違っている場合は、ガイダンスを提供してください。

/* 
    VIEW: v_testview 
    get rows where adminid not in second table 
    and rows that are in second table but have 
    an email not equal [email protected]  
*/ 
CREATE VIEW v_testview AS 
    SELECT s.adminid, s.company 
    FROM panel_customers s 
    WHERE s.adminid NOT IN 
       (SELECT sa.adminid 
       FROM panel_admins sa 
       WHERE sa.email = '[email protected]') 
    AND s.adminid NOT IN 
       (SELECT sa.adminid 
       FROM panel_admins sa); 
    . 
+1

の質問を見ることができますありがとうございました。部。 – Vishnu

+0

優秀!受け入れてくれてありがとう、私の喜びでした。 –

関連する問題