私はこれらの4つのテーブルを持っています:
contacts_address (id, owner_id, address)
contacts (id, name)
contacts_groups (id, name)
contacts_groups_link (contact_id, group_id)
では、連絡先ごとに独自の行がありcontacts
ます。各連絡先には無制限のアドレスを関連付けることができるためcontacts_address
、'owner_id' フィールドによって連絡先に関連付けられたアドレスです。ユーザーはグループを持つこともできます。各グループには行がありcontacts_groups
ます。contacts_groups_link
連絡先をグループに追加すると、その連絡先 ID とそのグループ ID を持つエントリが作成されます。
特定のグループ内のすべての連絡先を名前で検索し、それらの連絡先を返すクエリ ステートメントが必要です。
また、特定のグループ内のすべての連絡先とその添付アドレスを検索し、それらの連絡先を返すクエリ ステートメントも必要です。
それがどのように機能するかについて、私は非常に混乱しています。
連絡先を検索し、連絡先の住所も検索できるようにするために使用するクエリを次に示します。
SELECT `contacts_address`.*, `contacts`.*
FROM `contacts` JOIN `contacts_address` ON `contacts_address`.`parent`=`contacts`.`id`
WHERE `contacts`.`owner`='$user_id'
特定のグループ内のすべての連絡先を取得するために使用するクエリを次に示します。
SELECT * FROM contacts INNER
JOIN contacts_groups_link ON contacts_groups_link.contact_id = contacts.id
WHERE contacts_groups_link.group_id='$id'
これが誰かに役立つかどうかはわかりません。それらをどのように組み合わせるかについて非常に混乱しています。