2016-05-01 1 views
3
SELECT triple_join('A multiple join on the Equipment, EquipmentTypes, and 
    RentalInfo works effectively: ', 
    CASE WHEN 
     (SELECT name, e.riid, rental_start, in_use FROM Equipment AS e JOIN 
     EquipmentTypes ON equipment_type = etid JOIN RentalInfo AS ri ON 
     e.riid = ri.riid) 
= ('Enabler 420', 1, '20141107', 1) 
    THEN 'Passed' ELSE 'Failed' END 
); 

これは、自分のジョインが効果的に機能しているかどうかをテストするコードです。ただし、コードを実行すると、 "、"の近くに構文エラーがあると表示されます。誰かが何が起こっているか教えてもらえますか?SQLのトリプルジョインのテストケース

P.S .: Equipment、EquipmentTypes、およびRentalInfoは、私が定義したテーブルで、別のファイルに「挿入」されています。

+0

最初の推測は、2行にまたがる文字列の解析エラーです。データベースやクエリの処理方法については言及していないので、これが可能です。 –

+2

'triple_join'は2つのパラメータを持つ関数ですか?あなたのDBMSは複数の列を単一の '='を使って比較することをサポートしていますか?結合は実際には単一の行のみを返しますか? – dnoeth

+0

私はこのリンクに書かれている形式に従っています:http://stackoverflow.com/questions/754527/best-way-to-test-sql-queries私は同じ行のすべてのコマンドを使ってテストケースを書こうとしました。問題ではありません。はい、結合は1行しか返しません:Enabler 420 | 1 | 20141107 | 1 –

答えて

0

問題が解決するかどうかはわかりませんが、デバッグするのは自分のものよりはるかに簡単です。問題は、まだ個別に内部実行しようとする「SELECT」機能や、問題を引き起こしているものを参照してください解決しない場合は

SELECT triple_join('A multiple join on the Equipment, EquipmentTypes, and 
    RentalInfo works effectively: ', 
    CASE WHEN EXISTS (
     SELECT TOP 1 1 FROM Equipment AS e 
     INNER JOIN EquipmentTypes as et ON e.equipment_type = et.etid 
     INNER JOIN RentalInfo AS ri ON e.riid = ri.riid 
     WHERE name = 'Enabler 420' and e.riid = 1 and 
      rental_start = '20141107' and in_use = 1) 
    THEN 'Passed' ELSE 'Failed' END 
); 

:また、それは、複数の一致するレコードの問題を解決します。