如果它们具有相同的行数,如何根据 order_id 内部连接表

Posted

技术标签:

【中文标题】如果它们具有相同的行数,如何根据 order_id 内部连接表【英文标题】:how to inner join tables based on order_id if they have the same number of rows 【发布时间】:2015-10-10 13:59:03 【问题描述】:

我在同一个数据库中有两个表,一个叫“products”,另一个叫“customers”,我需要获取 customer.order_id、customer.name、customer.order_total、products.type 但事情是这样的只有当该客户有一个产品时,我才需要匹配结果,因此如果客户在另一张桌子上有多个产品,请忽略它并跳到下一个。

我有以下 SQL 内部连接正是我需要的,但我不知道如何根据产品数量过滤结果(如果客户有多个产品,我什至不想显示.

举例

Customers Table         

order_id    name    order_total 
13445       John    650 
28837       Steve   300 
20039       Craig   200 
39487       Matt    475 


Products Table          

order_id    product_sku   product_price    product_type
13445       12345         650              Toys
28837       34434         175              Pool
28837       54453         125              Food
20039       43546         200              Toys
39487       34256         475              Food

这两张表我需要的是:

order_id    name    order_total   product_type
13445       John    650           Toys
20039       Craig   200           Toys
39487       Matt    475           Food

我尝试过类似的方法,但它让我得到了所有结果,包括拥有不止一种产品的客户

SELECT customer.order_id, customer.name, customer.order_total, products.type
FROM customer
INNER JOIN products
ON customer.order_id=products.order_id
WHERE customer.order_total != 0
ORDER BY customer.order_id DESC

请帮忙,谢谢

【问题讨论】:

【参考方案1】:

两者都应该工作:

select c.*,p.product_type from Customers as c, Products as p where c.order_id = p.order_id and c.order_id in  
(select order_id from Products group by(order_id) having count(order_id) = 1);




select c.*, p.product_type from Products as p , Customers as c where  c.order_id = p.order_id  group by(p.order_id) having count(p.order_id) = 1;

【讨论】:

以上是关于如果它们具有相同的行数,如何根据 order_id 内部连接表的主要内容,如果未能解决你的问题,请参考以下文章

显示具有相同值的行数

根据表中的行数调整 NSTableView 或 NSScrollView 的大小

如何计算sql中where语句中的行数?

R:具有多个标题的列表-如何按标题拆分(每个标题的行数不等)

如何删除 x 没有。具有特定条件的从顶部开始的行数

如何根据插入的行数设置表格视图的高度