我有2个销售数据表,这些表没有公用密钥,只有销售日期和客户名称。我想加入它们,以便表A中的每一行最多有表B中的1个匹配项,如果找不到则为0。问题是同一客户在同一日期出现两次。所以如果我有这样的数据
Table A Table B
Customer | Date | Receipt Customer | Date | Invoice
=============================== ===============================
John | 2018-01-01 | A John | 2018-01-01 | C
John | 2018-01-01 | B John | 2018-01-01 | D
我怎么得到这个
Result
Customer | Date | Receipt | Invoice
=========================================
John | 2018-01-01 | A | C
John | 2018-01-01 | B | D
收据A与发票C或D相匹配并不重要,只要它们配对一次即可。目前,我的查询加入了AC,AD,BC,BD等所有
编辑:为澄清起见,我在任何一个表中都不能重复。一张发票和收据只能出现一次。 因此,这些结果之一都可以接受:
答案 0 :(得分:1)
这很痛苦,因为您需要枚举两个表,然后进行store
或聚合。这是一种方法:
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from '../reducers/root-reducer';
import { myMiddleware } from '../middleware/my-middleware';
export default function configureStore(initialState) {
const store = createStore(
rootReducer,
initialState,
applyMiddleware(thunk, myMiddleware)
);
return store;
}
答案 1 :(得分:0)
为什么既然只希望使用不同的记录,那么在加入两个表之后为什么不做不同的记录呢?
asyncio.wait
答案 2 :(得分:0)
我要给出一个您可能不会喜欢的答案:这不应该在SQL中完成。这是一个演示/显示问题。
在向用户显示数据而不是SQL后端的层中执行此类工作。他们在网页上查找吗?然后让网页获取原始数据并根据需要对其进行格式化-将每天的收据或每天的发票的内容放在单独的div中。 SQL是否使用此数据发送电子邮件?然后,不要让它生成纯文本电子邮件-让它生成HTML并将数据放入表格单元格中(这样,您就不必在两组数据之间的行进行协调,而数据量可能会有所不同。)
您真的不想玩试图使SQL输出在SQL内部看起来很漂亮的游戏。因为,老实说,您接受的答案中的代码可能工作正确,但是我不愿意多年来试图对其进行维护...