0

私は4つのテーブルを持っています

Tbl_Items: 
   Asset Id, 
   Asset_name, 
   Workshop,
   PAT_PASS

(workshop、および PAT_PASS は YES または NO のいずれかです。Workshop = YES および PAT_PASS = NO は、このアイテムがレンタルできないことを意味します。)

Tbl_Project_details:
   Project_id, 
   Project_start_date, 
   project_end_date

TBL_Project_items:
   Project_id, 
   Asset_id,
   Start_date,
   End_date

tbl_Items EXCEPT 内のすべてのアイテムを表示できるようにする select ステートメントを実行する必要があります。

1) Those that are already in use on another project on the dates that I need them.
2) Are in the workshop. (Workshop = YES)
3) Are not PAT Tested (PAT_PASS = NO)

これまでのところ、次のような簡単なステートメントから始めました。

$post_project_id = "13-1309.01";  //this is just an example number..

$sql = 
"SELECT * FROM Project_details 
Where Project_id = '$post_project_id' ";  
$result = mysql_query($sql);

while ($row = mysql_fetch_array($result)) 
{
$hire_start_date = $row['Start_date']; // we find out our projects start date
$hire_end_date = $row['End_date'];     // we find out our projects end date
}  

$result=mysql_query("SELECT Items.Asset_id, Items.Name  
FROM 
Items,Project_items 
WHERE
Project_details.Start_date < '$hire_start_date' 
AND 
Project_details.End_date > '$hire_end_date'") 
or die(mysql_error());

while($row = mysql_fetch_array($result))
{
// fill up an option box with the results
}

この基本的なスクリプトでさえ動作しないようです! 複数のテーブルから選択しようとしたのはこれが初めてなので、これは急な学習曲線です!

ありがとう!

4

3 に答える 3

0

$StartDateおよび$EndDate日付の制約は次のとおりです。

 SELECT ITEM.asset_id,
        ITEM.asset_name,
        ITEM.workshop,
        ITEM.pat_pass
   FROM Tbl_Items ITEM
        LEFT JOIN Tbl_Project_Items PJITEM
           ON PJITEM.asset_id = ITEM.asset_id
           AND PJITEM.start_date BETWEEN $StartDate AND $EndDate
           OR PJITEM.end_date BETWEEN $StartDate AND $EndDate
   WHERE ITEM.workshop = 'no'
     AND ITEM.pat_pass = 'yes' 
     AND PJITEM.asset_id IS NULL

パットって誰?

于 2013-08-06T13:58:34.313 に答える