我是猪的新手。
我想要实现的是从 1 个表中获取 2 个值,并查找某个 id 是否同时具有这两个项目。
例如
产品表
产品名称 |
---|
豆腐 |
井仓 |
寿司 |
订购表
订单号 | 产品名称 |
---|---|
123 | 井仓 |
124 | 井仓 |
124 | 豆腐 |
125 | 寿司 |
126 | 豆腐 |
127 | 豆腐 |
我想要实现的是 |订单编号 |产品名称 | |:---:|:--:| |124|井仓| |124|豆腐|
我想找到所有有 Ikura 和 Tofu 的 orderID。
到目前为止我尝试过的是:
fil = FILTER productTbl BY PRODUCT_NAME IN ('Ikura', 'Tofu');
joinTable = join order_detailTbl by PRODUCT_ID, fil by PRODUCT_ID;
generateID = foreach joinTable generate ORDER_ID;
它为我提供了包含 Ikura 或 Tofu 的所有订单 id 的输出。但条件是两者都在 1 个订单 ID 中。
我尝试了各种方法,但我不知道该怎么做...任何帮助将不胜感激!谢谢!!
要获取同时包含“Ikura”和“Tofu”的订单,您需要按订单 ID 对数据进行分组。然后,将袋子过滤为包含这两个值的袋子。最后,过滤数据以找出非空袋。
grp = GROUP productTbl BY ORDER_ID;
ikuraTofuIds = FOREACH grp {
ikuras = FILTER productTbl BY PRODUCT_NAME == 'Ikura';
tofus = FILTER productTbl BY PRODUCT_NAME == 'Tofu';
GENERATE group AS ORDER_ID,
ikuras,
tofus;
}
ikuraTofuOrders = FILTER ikuraTofuIds BY NOT IsEmpty(ikuras) AND NOT IsEmpty(tofus);
finalOrders = FOREACH ikuraTofuOrders GENERATE ORDER_ID;
OR
fil = FILTER productTbl BY (PRODUCT_NAME = 'Ikura' OR PRODUCT_NAME = 'Tofu');