我有一个mysql查询,不能完全弄清楚如何从给定的country_id
中提取某个product_id
的所有潜在客户。我想要一个每个客户只有一个记录的结果。
我的表格是orders
和customers
。如何从mysql表中获取所有可能的订单
---customers--
customer_id
country_id
name
---orders---
order_id
product_id
customer_id
我目前的查询给出了太多的结果。从其他product_id
的不在= 1。这里即记录是我的查询:
SELECT o.order_id
, c.name
, c.customer_id
, c.country_id
, o.product_id
FROM customers c
LEFT
JOIN orders o
ON o.customer_id = c.customer_id
WHERE o.product_id = 1
OR c.country_id = 1
一些样本的结果可能是这样的:
order_id name customer_id country_id product_id
1 Joe Smith 1 1 1
2 Joe Smith 1 1 2
3 John Doe 2 1 1
4 Kirk Smith 3 1 1
NULL Ron Rhoden 6 1 1
NULL Sam Smith 7 1 1
对于我而言,你可以假设给定的客户将只订购一次给定的产品。请注意我如何得到Joe Smith的结果product_id=2
。我不希望那个结果在我的名单中。罗恩罗登和萨姆史密斯的成绩对我而言是可取的。如何过滤product_id<>1
记录但仍包含所有country_id=1
记录? 谢谢。
基本上,这是一个循环的参数 - 你想国家ID = 1的行,但你没有。 – 2015-02-08 00:02:51
不,我希望每个使用country_id = 1的人以及那些已经订购了product_id = 1的人也希望他们的order_id。 – Thread7 2015-02-08 00:04:42
我总是发现左连接与地点...或真的令人困惑 – Strawberry 2015-02-08 00:07:01