我有两个要加入的表。我想为这两个表执行 INNER JOIN 以获得我想要的结果,但它似乎不起作用。每次我运行查询时,我都会收到一个 loading... 通知,显示时间过长,然后几分钟后,我收到以下消息:
处理请求时出错。错误代码 500。内部服务器错误。
基本上我想得到这种格式的结果:
- 姓名 姓氏,电话号码
- 订阅列表(订阅者状态) - 订阅日期。
例如)期望的结果:
Jane Doe, 082 980 9514
Home Loan Applications (Active) - 17/07/2013
Credit Report (Free Report) (Unsubscribed) 12/06/2013
这是示例表的链接: 表
您会注意到 Jane Doe 订阅了两个列表(房屋贷款申请和信用报告),因此这两个列表都列在结果中。然后,她已经取消订阅信用报告,这就是为什么它旁边有(取消订阅)。
这是我使用的 SQL 语句:
SELECT emailaddress, subscribedate, unsubscribed
FROM `interspire_subscriber`
INNER JOIN `interspire_customfield` ON interspire_subscriber.subscriberid =
interspire_customfield.subscriberid
我不知道为什么我会收到错误。有没有办法只使用 mySQL 来实现这一点?或者我还能在 PHP 中做什么来获得这个?
由于 76,000 多条记录,该脚本执行起来似乎也太慢了。
更新:正如建议的那样,我已将两个表上的订阅者 ID 设置为索引,并且查询工作正常。目前我使用这个mysql语句:
SELECT interspire_customfield.subscriberid, interspire_customfield.fname,
interspire_customfield.lname, interspire_customfield.phone, emailaddress,
subscribedate, unsubscribed, interspire_customfield.listid, listname
FROM`interspire_subscriber` INNER JOIN `interspire_customfield` ON
interspire_subscriber.subscriberid = interspire_customfield.subscriberid
但它仍然没有列出用户订阅的所有列表。