だから私はこれに対する答えをどこでも探しましたが、今のところ運がありません. どんな助けでも大歓迎です。私はmysqlを初めて使用します(filemaker proのバックグラウンドから転送)。
私は、ビジネスの見込み客の情報を保持するデータベースを持っています。ユーザーに表示するリスティング情報について質問があります。INQUIRY テーブルには、各問い合わせの情報が保持されます (つまり、問い合わせの日付、問い合わせのステータスなど)。PROSPECT テーブルには、各見込み客 (見込み客) に関する情報(名、姓、年齢など) が保持されます。3 番目のテーブル INQUIRYNOTESには、見込み客との連絡先に関する情報が保持されます (つまり、次の連絡日、メモ、次のアクションなど)。これらの各テーブルは、キーinquiryIDに関連付けられています。
毎日、ユーザーは画面に来て、その日にフォローアップする見込み客/問い合わせが表示されます。これは、アクションの日付が今日以下の問い合わせです。リストには、inquiryID、そのinquiryID に関連するすべての見込み客のリスト名(最大 2 つ)、およびaction dateを含めたいと考えています。
これが私がこれまでに試したことです:
SELECT inquiry.inquiryID,
CASE WHEN prospect.lastName = '' THEN prospect.firstName
WHEN prospect.firstName = '' THEN prospect.lastName
ELSE CONCAT(prospect.lastName, ', ',prospect.firstName) END as fullName, inquiryNote.actionDate
FROM inquiry, prospect, inquiryNote
WHERE inquiry.inquiryID = prospect.inquiryID
AND inquiry.inquiryID = inquirynote.inquiryID
AND inquirynote.actionDate != \"0000-00-00\"
AND actionDate <= \"".date("Y-m-d")."\"
GROUP BY inquiryID ORDER BY actionDate";
これは私が探している情報を返しますが、見込客の 1 つしかリストされません (問い合わせに 2 つある場合でも)。
次に、これに GROUP_CONCAT(firstname) を入れてみたところ、コンマで区切られた行にリストされたプロスペクトの名のリストが得られました (私は近づいています)。次に、GROUP_CONCAT(last name, ', ', firstname) と GROUP_CONCAT(lastname,firstname) を試しましたが、ここでも 1 つのプロスペクトのみがリストされ、コンマで区切られた複数のプロスペクトはリストされません。
上記のコードでfullNameという名前を付けた変数をGROUP_CONCAT に含めて、返された行に、問い合わせに関連するすべての見込み客のリストが表示され、カンマで区切られていることを確認したいと考えています。
作成した Web ページのテーブルに次の列が必要です。
お問い合わせID | 見込み客の名前 (姓が先) | 次の行動日
繰り返しますが、これまでのところ、取得できるように見えるのは次のとおりです。
お問い合わせID | 1 人の見込み客の名前| 次の行動日
解決策は簡単かもしれませんが、私はmysqlに慣れていないので迷っています。
詳細が必要な場合はお知らせください。
解決策で更新しますが、最後に同様の質問があります
問題は、姓と名のフィールドの一部に NULL 値が含まれていたことです。どうやら、GROUP_CONCAT は null 値で機能するようになりました。これは、すべての NULL 値を取り除くと機能した、終了したクエリです。
SELECT
inquiry.inquiryID,
inquiry.initialDate,
inquiryNote.actionDate,
GROUP_CONCAT(DISTINCT
CONCAT(
CASE WHEN prospect.lastName = '' THEN prospect.firstName
WHEN prospect.firstName = '' THEN prospect.lastName
ELSE CONCAT(
prospect.firstName, ' ',prospect.lastName
) END
) SEPARATOR ', '
) AS prospectList,
GROUP_CONCAT(DISTINCT
CONCAT(
CASE WHEN influencer.lastName = '' THEN influencer.firstName
WHEN influencer.firstName = '' THEN influencer.lastName
ELSE CONCAT(
influencer.firstName, ' ',influencer.lastName
) END
) SEPARATOR ', '
) AS influencerList
FROM inquiry, prospect, inquiryNote, influencer WHERE inquiry.inquiryID = prospect.inquiryID
AND inquiry.inquiryID = inquirynote.inquiryID
AND inquiry.inquiryID = influencer.inquiryID
AND inquirynote.actionDate != "0000-00-00" AND actionDate <= "2011-09-22"
GROUP BY inquiryID
ORDER BY actionDate;
最後の質問は、NULL 値に遭遇した場合でも GROUP_CONCAT を機能させることができるかということです。