データベースに3つのテーブルがあります。
- ab_contacts
- id
- ファーストネーム
- 苗字
- addressbook_id
- など(もっと、しかしこれらは関連するものです)
- ab_addressbooks
- 名前
- id
- co_comments
- id
- link_id
- コメント
特定のアドレス帳で、連絡先とそれらに関連するすべてのコメントを選択できるクエリを作成したいと思います。
特定のアドレス帳のすべての人を選択するには、次を使用できます。
select count(*) from ab_contacts where addressbook_id = '50';
これは8152人を返します。
ただし、クエリを実行すると、次のようになります。
select
ab_addressbooks.name,
ab_contacts.first_name,
ab_contacts.last_name,
ab_contacts.email,
ab_contacts.email2,
ab_contacts.email3,
ab_contacts.function,
ab_contacts.address,
ab_contacts.address_no,
ab_contacts.city,
ab_contacts.state,
ab_contacts.zip,
ab_contacts.home_phone,
ab_contacts.work_phone,
ab_contacts.cellular,
REPLACE(REPLACE(REPLACE(ab_contacts.comment, '\r', ', '), '\n', ', '), '\\', '') AS comment,
REPLACE(REPLACE(REPLACE(group_concat(co_comments.comments separator ', '), '\r', ', '), '\n', ', '), '\\', '') AS comment2
from ab_contacts
LEFT JOIN ab_addressbooks ON (ab_contacts.addressbook_id = ab_addressbooks.id)
LEFT JOIN co_comments ON (ab_contacts.id = co_comments.link_id)
WHERE ab_contacts.addressbook_id = '344';`
フォーマットは機能しますが、1045の結果しか得られません。足りないものがあると思いますが、わかりません。どんな助けでも大歓迎です。