2017-02-08 2 views
0

私は楽器予約システムを持っており、入手可能な楽器を探したい。選択された日付の間に使用可能な楽器

選択された日付の間に機器がレンタルテーブルにない場合、すべての機器情報を選択します。

私は、次のコードを使用していますが、それは結果を返していない私は2つのテーブル内にある機器テーブル及びレンタルテーブル、dateoutとreturndateを使用してい

public List<Instrument> availableInstruments(DateTime startDate, DateTime returnDate) 
    { 
     //string startDate1 = startDate.ToString("yyyy-MM-dd HH:mm:ss.fff"); 
     //string returnDate1 = returnDate.ToString("yyyy-MM-dd HH:mm:ss.fff"); 
     List<Instrument> availableInstruments = new List<Instrument>(); 
     db.Cmd.Parameters.Add(new SqlParameter("@startDate1", startDate)); 
     db.Cmd.Parameters.Add(new SqlParameter("@returnDate1", returnDate)); 
     db.Cmd.CommandText = "SELECT * FROM InstrumentTBL WHERE InstrumentID NOT IN (SELECT InstrumentTBL.InstrumentID FROM InstrumentTBL IT JOIN RentalTBL DT ON IT.InstrumentID = DT.InstrumentID Where(DT.DateOut <= @startDate1 AND DT.ReturnDate >= @returnDate1) OR (DT.DateOut < @returnDate1 AND DT.ReturnDate >= @returnDate1) OR (@startDate1 <= DT.DateOut AND @returnDate1 >= DT.DateOut))"; 
     db.Rdr = db.Cmd.ExecuteReader(); 
     while (db.Rdr.Read()) 
     { 
      availableInstruments.Add(getInstrumentFromReader(db.Rdr)); // store into list 
     } 
     db.Rdr.Close(); 
     return availableInstruments; 
    } 

(利用可能な5が存在すべきです)レンタルテーブル。

私は別のスレッドからコードを得て、それを採用しようとしましたが、ほとんど成功しませんでした。

助けを歓迎します。

+0

テーブル構造+例データ+期待される出力プラザでこれを試してみてください。私たちに推測させない – Steve

+0

イメージを追加しようとしましたが、何らかの理由で許可されません。ごめんなさい。あなたの返事をありがとう私はより多くの情報で投稿を編集しようとします。 –

答えて

1

はあなたの選択

SELECT * FROM InstrumentTBL 
WHERE InstrumentID NOT 
IN (SELECT DT.InstrumentID 
    FROM RentalTBL DT 
    Where(DT.DateOut >= @startDate1 AND DT.ReturnDate <= @returnDate1)) 
+0

ありがとう私はあなたの応答を使用し、私のいくつかを追加し、それは動作します(後でより広範囲にテストします)@記号のために最終的なコードを追加することはできません申し訳ありません。ありがとうございました。 –

関連する問題