所以我到处寻找答案,但到目前为止还没有运气。任何帮助深表感谢。我是 mysql 新手(从 filemaker pro 背景转移)。
我有一个数据库,用于保存我们业务前景的信息。我有一个关于列表信息的问题,供我们的用户查看。INQUIRY 表保存每个查询的信息(即查询进入的日期、查询的状态等)。PROSPECT 表包含每个潜在客户(潜在客户)的信息(即名字、姓氏、年龄等)。第三个表 INQUIRYNOTES保存了我们与潜在客户的联系信息(即下次联系日期、备注、下一步操作等)。这些表中的每一个都与键inquiryID相关。
每天,用户将来到一个屏幕,在那里他们将看到他/她将在当天跟进的线索/查询,这些查询是那些行动日期小于或等于今天的查询。我希望列表包含inquiryID、与该inquiryID 相关的所有潜在客户的列出名称(最多2 个)以及操作日期。
这是我迄今为止尝试过的:
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";
这将返回我正在寻找的信息,但它只列出了一个潜在客户(即使有 2 个用于查询)。
接下来,我尝试将 GROUP_CONCAT(firstname) 放入其中,它给了我一个潜在客户的名字列表,以逗号分隔(我越来越近了)。然后我尝试了 GROUP_CONCAT(last name, ', ', firstname) 和 GROUP_CONCAT(lastname,firstname),但它只会列出一个潜在客户,而不是用逗号分隔的多个潜在客户。
我希望我在上面的代码中命名为fullName的变量包含在 GROUP_CONCAT 中,以便在返回的行中,我看到与列出的查询相关的所有潜在客户的列表,并用逗号分隔。
我希望我创建的网页中的表格具有以下列:
查询ID | 潜在客户姓名(姓氏在前)| 下一个行动日期
到目前为止,我似乎只能得到:
查询ID | 1 个潜在客户名称| 下一个行动日期
解决方案可能很简单,但由于我是 mysql 新手,所以我迷路了。
如果您需要更多详细信息,请告诉我。
更新解决方案,但最后有类似的问题
问题是某些名字和姓氏字段具有 NULL 值。显然, GROUP_CONCAT 现在将使用空值。这是我在删除所有 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 工作吗?