【发布时间】:2015-03-23 14:47:43
【问题描述】:
我在 SQL 编程方面有点不够深入,但是在搜索了我的问题的解决方案后,我没有找到任何相关的答案,因此我的问题在这里:
使用 MySQL,我有一个名为 newsletter_subscriber 的表。此表仅包含电子邮件地址列表 (subscriber_email),每行电子邮件地址都有一个唯一 ID (subscriber_ID),每行 ID 递增 1。
我想要完成的是能够输入“发件人”ID 和“收件人”ID(例如,从 672 到 835),并且对于其中的每一个,都有查询表 sales_flat_order_address 和 sales_flat_order_address相应的电子邮件地址返回客户的名字 (firstname) 和姓氏 (lastname) 以及电话号码 (telephone)。
这三个表(newsletter_subscriber、表 sales_flat_order_address 和 sales_flat_order_address)的唯一共同点是电子邮件地址。如果在 sales_flat_order_address 和 sales_flat_order_address 中找到匹配项,则应放弃对该电子邮件地址的进一步搜索,这样我们就不会得到同一电子邮件地址的多个结果(两个表可能包含相同的电子邮件地址,每个表甚至可能包含电子邮件地址多次,在所有情况下都会显示名字、姓氏和电话的完整信息)。
最终结果应该是这样的(下面是我的 cmets):
1: 2: 3: 4: 5:
672 email1@example.com Firstname1 Lastname1 Telephone1
673 email2@example.com Firstname2 Lastname2 Telephone2
674 email3@example.com Firstname3 Lastname3 Telephone3
675 email4@example.com Firstname4 Lastname4 Telephone4
676 email5@example.com Firstname5 Lastname5 Telephone5
.. .. .. .. ..
835 email174@example.com Firstname6 Lastname6 Telephone6
*1:第 1 列,显示从表 newsletter_subscriber 中手动输入的subscriber_id 列增加的 ID
*2:第 2 列,显示表 newsletter_subscriber 中的相应字段 subscriber_email
*3:第 3 列,显示表 sales_flat_order_address 或 sales_flat_order_address 中的相应字段 firstname,以对应第 2 列中的相应电子邮件地址
*4:第 4 列,显示表 sales_flat_order_address 或 sales_flat_order_address 中的相应字段姓氏,以对应第 2 列中的相应电子邮件地址
*5:第 5 列,显示表 sales_flat_order_address 或 sales_flat_order_address 中的相应字段电话,以对应第 2 列中的相应电子邮件地址
谁能提供代码示例?
【问题讨论】:
-
手动是什么意思?手动在哪里?
-
糟糕,我相信可以提示用户输入。想一想,这对于普通的 SQL 编程来说可能是不可能的,尽管我的 SQL 数据库处理程序 (Navicat) 确实提供了这个选项。也许这是 Navicat 特有的功能?