1

Adobe coldfusion で行った挿入フォームがあります。この挿入フォームは、私のチームの男性からの情報を、squadreport というデータベース テーブルに挿入します。分隊レポートテーブルに挿入するたびに、挿入したばかりの名前を、まだ挿入されていないチームの利用可能な名前のメニューリストから削除したいと思います。このようにして、誤って名前を再挿入することはありません。メニュー リストは、私の NAMES テーブルから生成されます。NAMES テーブルの name.foiid フィールドは、SQUADREPORT テーブルのスクワッドレポート.squfoiid フィールドと一致します。

例: 分隊報告.squfoiid が開始日「2012-11-18」、終了日「2012-11-24」で既に記録されている場合、同じ人物が同じ日付で再挿入されるのを防ぎたい など.

現在の構文では空のリストが生成されます。

私の現在の構文は次のようになります。

<cfquery name="brother" datasource="master">
SELECT name.foiid, squadlt, squadlt.ltid, CONCAT(name.fname,'  ',name.lname) AS teammember
FROM name 
LEFT JOIN  name  ON name.foiid = squadreport.squfoiid
LEFT JOIN squadlt ON ltid = squadreport.sqult
WHERE name.foiid is null
AND squweekbegin =’2012-11-18’
AND squweekend = ‘2012-11-24’
AND squadlt = '3'
AND ltid = '3'
AND CITY = 'sandiego'
AND STATUS <> 'd'
AND STATUS <> 'T'
AND Form4444Complete = 'yes'
ORDER BY teammember
</cfquery>
4

2 に答える 2

1

列が一致する SquadReport に行を挿入すると仮定するとfoiid、SquadReport テーブルに存在する foiid 値を除外するだけで済みます。スクワッドメンバーがアクティブ化されている、または展開されている必要があるなどの他の条件がある場合は、除外条項に追加してください.

<cfquery name="brother" datasource="master">
SELECT name.foiid, squadlt, squadlt.ltid, CONCAT(name.fname,'  ',name.lname) AS teammember
FROM name 
LEFT JOIN  name  ON name.foiid = squadreport.squfoiid
LEFT JOIN squadlt ON ltid = squadreport.sqult
WHERE name.foiid is null
AND squweekbegin =’2012-11-18’
AND squweekend = ‘2012-11-24’
AND squadlt = '3'
AND ltid = '3'
AND CITY = 'sandiego'
AND STATUS <> 'd'
AND STATUS <> 'T'
AND Form4444Complete = 'yes'
<!--- new code here --->
AND name.foiid NOT IN (SELECT foiid FROM SquadReport)
<!--- end new code --->
ORDER BY teammember
</cfquery>
于 2013-01-03T15:19:04.597 に答える
0

つまり、基本的にやりたいことは、表の分隊レポートにない人を表示することですか? このようなものが動作するはずです:

select name.foiid
, CONCAT(name.fname,'  ',name.lname) AS teammember
from name 
where not exists
(select 1
from squadreport
where squfoiid = name.foiid
and other constraints
)
and other constraints

あなたが投稿したコードは初期の開発コードだと思います。本番環境に移行したら、変数の文字列やクエリ パラメータの代わりに日付オブジェクトを使用したいと思うでしょう。

于 2013-01-03T15:20:42.950 に答える