- ベストアンサー
出欠登録についての質問|未登録者の取得方法とソースコード
- 現在、phpとデータベースを使用して出欠登録を作成しています。メンバーテーブル、スケジュールテーブル、出欠登録用のテーブルがあります。
- 出席者と欠席者は取得できていますが、未登録者の取得方法がわかりません。どのようにすれば未登録者を取得することができるのでしょうか?
- ソースコードを教えていただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 イマイチデータの連携が理解できてないですが・・・。 未登録者=entryテーブルに入ってない という認識でOKなら、 select no, 名前 from memberテーブル where not exists (select 'X' from entry where member_id = no and schedule_id = 欲しいやつ) 単純にentryにないメンバーを出しただけですが・・・。 こういう事ではないのかな???
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
entryテーブルの仕様がいまいち? 「佐藤さんはスケジュール1に出席、鈴木さんはスケジュール2に欠席をエントリーしている」 ということですか? スケジュール1に出席を登録するとスケジュール2に対して佐藤さんは出席できないのでしょうか? また鈴木さんはスケジュール2に対しては欠席になると、スケジュール1は出席できない のでしょうか?たんに「未登録」かもしれませんね・・・ そのあたりを詰めていかないと、スケジュール表として使い物にならないかも。
お礼
お忙しいなか、ご回答ありがとうございます。 佐藤さんも鈴木さんもスケジュール1に出欠登録をしています。 entryテーブルの1は出席、2は欠席としています。 0を使わない理由は他にも項目があるからです。 スケジュール1に登録したからといってスケジュール2に登録できないということはないです。
- duron
- ベストアンサー率77% (73/94)
外部結合の優先させる表をmemberにしてやればいいと思います。 //出席者 $entryquery1 = "SELECT * FROM member LEFT JOIN entry ON member.no=entry.member_id WHERE (entry.schedule_id=".$schedule_id." OR entry.schedule_id is NULL) AND entry.entry = 1"; //欠席者 $entryquery2 = "SELECT * FROM member LEFT JOIN entry ON member.no=entry.member_id WHERE (entry.schedule_id=".$schedule_id." OR entry.schedule_id is NULL) AND entry.entry = 2"; //未登録者 $entryquerynull = "SELECT * FROM member LEFT JOIN entry ON member.no=entry.member_id WHERE (entry.schedule_id=".$schedule_id." OR entry.schedule_id is NULL) AND entry.entry is NULL"; ※カラムの型がわからなかったので数字はすべてintとして記述してます。 文字列ならクォーテーションを追加してください。
お礼
お忙しいなか、ご回答ありがとうございます。 今職場のため作業できませんが、家に帰ったらやってみようと思います。 再度ご質問させていただくかも御座いませんが、宜しくお願いします。
お礼
お忙しい中、ご回答有難う御座います。 上記の内容でできました!! 有難う御座います。 本当に有難う御座います。