|
|
1
0
定义需求
让我给你列出
(我使用术语子集是因为在概念级别上,指定未过期子集的条件并不重要) 这里有几个暗示
如果ISBN是唯一的 现在,如果您的isbn在两个表中都是唯一的,那么Bruno的答案似乎指向了正确的方向(虽然没有完全通过他的SQL,但看起来确实有点过于复杂)。 在mysql中实现外部连接的方法有
如果此处使用的某些术语不清楚,请参见 Common MySQL Queries 如果ISBN不是唯一的
编辑 澄清后,您可以尝试此解决方案
|
|
|
2
0
如果使用“AS”定义要返回的字段的名称以便它们匹配,则UNION应该起作用。例如:
|
|
|
3
0
如果销售表中始终有ISBN,则可以完全加入并获得所需的结果。否则,您将需要左加入。
编辑-尝试以上操作或以下操作:
编辑-选择不匹配字段的示例:
|
|
|
4
0
幸运的是,我们可以模仿
由于您的表在除ISBN以外的所有字段上都不同,我们需要分两步来完成:
CREATE TABLE sales ( isbn INT NOT NULL ,sale_time TIMESTAMP NOT NULL ,sale_value VARCHAR(100) ,PRIMARY KEY (isbn) ); CREATE TABLE affiliate_sales ( isbn INT NOT NULL ,sale_time TIMESTAMP NOT NULL ,affiliate_sale_value VARCHAR(100) ,PRIMARY KEY (isbn) ); INSERT INTO sales (isbn,sale_time,sale_value) VALUES (1,TIMESTAMPADD(HOUR,-30,NOW()),'expired_sale'); INSERT INTO sales (isbn,sale_time,sale_value) VALUES (2,TIMESTAMPADD(HOUR,-34,NOW()),'expired_sale'); INSERT INTO sales (isbn,sale_time,sale_value) VALUES (3,TIMESTAMPADD(HOUR,-23,NOW()),'unexpired_sale'); INSERT INTO sales (isbn,sale_time,sale_value) VALUES (4,TIMESTAMPADD(HOUR,-12,NOW()),'unexpired_sale'); INSERT INTO sales (isbn,sale_time,sale_value) VALUES (5,TIMESTAMPADD(HOUR,-12,NOW()),'unexpired_sale_only'); INSERT INTO affiliate_sales (isbn,sale_time,affiliate_sale_value) VALUES (1,TIMESTAMPADD(HOUR,-74,NOW()),'expired_affiliate_sale'); INSERT INTO affiliate_sales (isbn,sale_time,affiliate_sale_value) VALUES (2,TIMESTAMPADD(HOUR,-54,NOW()),'unexpired_affiliate_sale'); INSERT INTO affiliate_sales (isbn,sale_time,affiliate_sale_value) VALUES (3,TIMESTAMPADD(HOUR,-80,NOW()),'expired_affiliate_sale'); INSERT INTO affiliate_sales (isbn,sale_time,affiliate_sale_value) VALUES (4,TIMESTAMPADD(HOUR,-12,NOW()),'unexpired_affiliate_sale'); INSERT INTO affiliate_sales (isbn,sale_time,affiliate_sale_value) VALUES (6,TIMESTAMPADD(HOUR,-44,NOW()),'unexpired_affiliate_sale_only'); 下面是提取所需数据的查询(抱歉,格式不正确,我找不到如何在pre块中正确显示它):
得到以下输出: +------+---------------------+---------------------+---------------------+-------------------------------+ | isbn | sale_time | sale_value | affiliate_sale_time | affiliate_sale_value | +------+---------------------+---------------------+---------------------+-------------------------------+ | 3 | 2010-11-06 11:28:08 | unexpired_sale | NULL | NULL | | 4 | 2010-11-06 22:28:08 | unexpired_sale | 2010-11-06 22:28:08 | unexpired_affiliate_sale | | 5 | 2010-11-06 22:28:08 | unexpired_sale_only | NULL | NULL | | 2 | NULL | NULL | 2010-11-05 04:28:08 | unexpired_affiliate_sale | | 6 | NULL | NULL | 2010-11-05 14:28:08 | unexpired_affiliate_sale_only | +------+---------------------+---------------------+---------------------+-------------------------------+ 5 rows in set (0.00 sec) |