私はあなたのデータベースのデザインを見ています。別の問題が明らかになった場合は、各issueごとに別々の列を持つテーブルを用意することで、更新するのが難しいでしょう。
私はおそらく、このための4つのテーブルを使用したい:
- ユーザー:ユーザーID(AUTONUM、PK)、ユーザー名(テキスト)
- 植物:PlantID(AUTONUMを、PK)、PlantName(テキスト)
- IssueList:IssueID(AUTONUM、PK)、IssueDescription(テキスト)
- User_Issues:ユーザID(NUM、PK)、PlantID(NUM、PK)、IssueID(NUM 、PK)、HasIssue(ブール)
User_Issuesテーブルには、他のテーブルから各識別子を構成した複合キーがあります。これにより、ユーザーは工場で同じ問題を2回以上発生することはありません。
新しいユーザーが作成されると、クエリがUser_Issuesテーブルを更新するために実行します:
INSERT INTO User_Issue(PlantID, IssueID, UserID)
SELECT PlantID, IssueID, UserID
FROM Plants, IssueList, Users
WHERE UserName = "Darren"
これは、ユーザーごとに植物や問題から直積を作成します。たとえば、2つのプラントと3つの問題がある場合、2つのプラントで6つの問題が発生する可能性があります。
このSQLは、あなたが問題を割り当てることができるようになります:
SELECT UserName
, PlantName
, IssueDesc
, HasIssue
FROM ((
User_Issue INNER JOIN Users ON User_Issue.UserID = Users.UserID)
INNER JOIN Plants ON User_Issue.PlantID = Plants.PlantID)
INNER JOIN IssueList ON User_Issue.IssueID = IssueList.IssueID
ORDER BY PlantName, IssueDesc
はあなただけ上記のSQLにWHERE HasIssue
を追加する必要が問題を表示します。
SELECT UserName
, PlantName
, IssueDesc
, HasIssue
FROM ((
User_Issue INNER JOIN Users ON User_Issue.UserID = Users.UserID)
INNER JOIN Plants ON User_Issue.PlantID = Plants.PlantID)
INNER JOIN IssueList ON User_Issue.IssueID = IssueList.IssueID
WHERE HasIssue
ORDER BY PlantName, IssueDesc
すごい...何不完全な質問に対する完全な答え!オペラが尋ねる次のことは彼にあなたの仕事を送ることですLOL –
@krishKMおそらく穴がいっぱいです。私は 'User_Issue'テーブルに値を追加する追加クエリがあるのが好きではありませんが、クエリを更新不可能にすることなくSQLの各プラントに対するすべての問題をリストする方法は考えられません。 –
詳細な回答ありがとうDarren! あなたのアイデアは私にとって完璧に機能します! –