• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:出欠登録について)

出欠登録についての質問|未登録者の取得方法とソースコード

このQ&Aのポイント
  • 現在、phpとデータベースを使用して出欠登録を作成しています。メンバーテーブル、スケジュールテーブル、出欠登録用のテーブルがあります。
  • 出席者と欠席者は取得できていますが、未登録者の取得方法がわかりません。どのようにすれば未登録者を取得することができるのでしょうか?
  • ソースコードを教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんばんは。 イマイチデータの連携が理解できてないですが・・・。 未登録者=entryテーブルに入ってない という認識でOKなら、 select no, 名前 from memberテーブル where not exists (select 'X' from entry where member_id = no and schedule_id = 欲しいやつ) 単純にentryにないメンバーを出しただけですが・・・。 こういう事ではないのかな???

h-h13
質問者

お礼

お忙しい中、ご回答有難う御座います。 上記の内容でできました!! 有難う御座います。 本当に有難う御座います。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

entryテーブルの仕様がいまいち? 「佐藤さんはスケジュール1に出席、鈴木さんはスケジュール2に欠席をエントリーしている」 ということですか? スケジュール1に出席を登録するとスケジュール2に対して佐藤さんは出席できないのでしょうか? また鈴木さんはスケジュール2に対しては欠席になると、スケジュール1は出席できない のでしょうか?たんに「未登録」かもしれませんね・・・ そのあたりを詰めていかないと、スケジュール表として使い物にならないかも。

h-h13
質問者

お礼

お忙しいなか、ご回答ありがとうございます。 佐藤さんも鈴木さんもスケジュール1に出欠登録をしています。 entryテーブルの1は出席、2は欠席としています。 0を使わない理由は他にも項目があるからです。 スケジュール1に登録したからといってスケジュール2に登録できないということはないです。

  • duron
  • ベストアンサー率77% (73/94)
回答No.1

外部結合の優先させる表を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として記述してます。 文字列ならクォーテーションを追加してください。

h-h13
質問者

お礼

お忙しいなか、ご回答ありがとうございます。 今職場のため作業できませんが、家に帰ったらやってみようと思います。 再度ご質問させていただくかも御座いませんが、宜しくお願いします。

関連するQ&A