私がしたいことを説明するのは本当に難しいと思っています。SQLのwhere節が動作しない
私は2つのテーブルを持っている - ヘッダーとサインオフは
ヘッダーは次のようなものになります:ヘッダ
にIDに関連ID | Badge | HeaderID | Recert |
24 | 204 | 60 | 0 |
25 | 201 | 60 | 1 |
26 | 201 | 61 | 0 |
HeaderIDサインオフで:
ID | Name | Description | Path | Pnum | DateC | Prep | Assem |
60 | OSI | OSI-180 | blah.pdf | abc123 | 1/11/16 | 0 | 1 |
61 | test | test | test.pdf | 12345 | 1/11/16 | 1 | 0 |
サインオフ、このように
header.ID、header.Name、header.path、header.desを取得したいcription、header.datec、header.prep、header.assem、およびsignoff.Recertify。
header.IDは、複数の行があるので変化しますが、この例では2つあります。サインオフテーブルには、60(204,201)に関連する2つのバッジと、61(201)に関連する1つのバッジがあります。
ステートメントで60と61のすべての行を取り除きたいが、重複する行がないようにする(60と61の両方が1回だけ表示される)と、バッジが関連する行を使用する複数の。例えば、それが表示されるでしょう:
60, OSI, etc, etc, 1/11/16, 0, 1, 0 - relates to badge 204
61, test, etc, etc, 1/11/16, 1, 0, 0 - relates to badge 201
私がこれまで持っていることは次のとおりです。
SELECT header.ID, header.Name , header.path , header.description , header.datec , header.prep , header.assem , header.testing , header.finish , signoff.Recertify,
from screens.header
LEFT JOIN screens.signoff ON header.ID=signoff.HeaderID
where header.ID = '60' and signoff.badge = '204'
はこれで問題がある(60および204は、それを実行するコードに変更されます)サインオフ時にHeaderIDに対して204のエントリがない場合は表示されません。
私が本質的にしようとしているのは、テーブルに値を設定して、誰かがドキュメント(再作成時に1で示される)に対して再認証する必要がある場合、行の色を変更することです。変数のユーザーのバッジ番号があります。
私のデータを取得する方法を見つけることができないので、誰かがSQLのビットを助けることができます。あなたは「殺害」LEFT JOINとあなた以来、それだけでJOINを作っていることを意味し、左の
バッジテストをjoin節に入れます。基本的には、join ... on id = headeridとbadge = 204'です。そうすれば、右側(サインオフ)側にレコードがなくても、あなたはまだ左(ヘッダー)にあるものを取得します。 –
Recertのロジックは何ですか? Recert 0とRecert 1のID 60には2つのサインオフがあります。何が表示され、なぜ表示されるのですか? – Galz