簡単にするために、2つのテーブルがあります。以下を例として考えてください。
- 連絡先 (名前と電子メールがある)
- メッセージ (メッセージだけでなく、連絡先テーブルに同期する必要がある名前と電子メールもあります)
さて、「リレーショナルメソッドを使え」とか外部キーとか言いたくてうずうずしている方のためにお願いします。メッセージテーブル自体にメッセージの名前と電子メールの「コピー」が必要であり、時々同期する必要があります。
同期要件に従って、メッセージの名前を連絡先テーブルの最新の名前と同期する必要があります。
私は基本的に、連絡先テーブルのすべての行のループに次の UPDATE SQL を持っています
UPDATE messages SET name=(
SELECT name FROM contacts WHERE email = '$cur_email')
WHERE email='$cur_email'
上記はすべての連絡先をループし、私が持っている数の連絡先を起動します。
内部を使用せずにこれを行うためのループのアイデアがいくつかありますSELECT
が、上記の方が効率的であると思いましたが(そうですか?)、より効率的なSQLの方法があるかどうか疑問に思っていましたか? お気に入り:
UPDATE messages SET name=(
SELECT name FROM contacts WHERE email = '$cur_email')
WHERE messages.email=contacts.email
結合のように見える何か?