このトピックを作成する前に、コミュニティ全体を調査しましたが、私がやろうとしていることに近いものは見つかりませんでした。私は、学術目的のみの PHP プロジェクトである小さなソーシャル ネットワークを開発しています。
データベースに次のテーブルがあります。
Table Name: users
Columns:
id => INT (Primary Key - AutoIncrement)
name => VARCHAR(200)
birthdate => DATE
login => VARCHAR(60)
password => VARCHAR(60)
Table Name: friends
Columns:
id => INT (Primary Key - AutoIncrement)
idRequester => INT (Foreign Key - users>>id)
requestDate => DATE
idRequested => INT (Foreign Key - users>>id)
confirmationDate => DATE
situation => CHAR(1) (A=Accepted | P=Waiting | R=Rejected)
次のクエリを使用すると、その日のすべての誕生日を取得できます (友情は考慮しません)。
SELECT id, name, DATE_FORMAT(birthdate, '%d/%m/%Y') AS dtbirth,
TIMESTAMPDIFF(YEAR, birthdate, NOW()) AS age
FROM users WHERE birthdate LIKE '%-06-21';
これは、このリンクのポルトガル語フォーラムの別のトピックで提起された質問に似ています。
特定のユーザー X から、今日または現在の日付から 7 日以内に誕生日を迎えるすべての友人を取得する必要があります。2つの列があり、X が要求しているユーザーの場合、要求されたユーザーに参加する必要があります。それ以外の場合は X が要求されている場合、要求者に参加します。
つまり、今日または今後 7 日以内に誕生日を迎える「ユーザー ID 50」の友人をすべて取得します。
この問題を解決し、パフォーマンスを向上させるクエリを実行する方法がわからないため、誰かが私を助けることができれば。疑問はよくあることであり、学術的な目的であるため、多くの人に役立つと思います。ありがとうございました。