我需要选择一个条目列表,但需要跳过那些在 2 个不同表中具有匹配字段的条目。这是我的数据库结构
订单:
| orders_id | customers_id |
| 100 | 01 |
| 101 | 20 |
| 102 | 32 |
| 103 | 48 |
| 104 | 99 |
客户(仅供参考):
| firstname | lastname | customers_id |
| John | Doe | 20 |
| Fred | Flinty | 22 |
| Mark | Smith | 32 |
推荐:
| customers_id | testimonial |
| 20 | aaa |
| 32 | bbb |
| 38 | ccc |
| 49 | ddd |
| 55 | eee |
因此,我需要选择我的订单表中的所有客户,但如果他们在我的推荐表中,则需要跳过它们。在上面显示的示例中,我只需要选择客户 01、48 和 99,因为它们不存在于 Testimonials 表中。
这是我尝试过的,但显然缺少一些东西:
SELECT c.firstname, c.lastname, c.customers_id, o.orders_id,
o.customers_id, s.date_added as status_date
FROM (orders o, testimonials t )
JOIN customers c
ON c.customers_id = o.customers_id
JOIN status_history s
ON s.orders_id = o.orders_id
and s.orders_status_id = o.orders_status
and o.customers_id != t.customer_id
order by o.orders_id ASC;
有人可以告诉我我做错了什么以及如何跳过在两个表格(订单和推荐)中找到的客户吗?我觉得我走在正确的轨道上,因为如果我将其更改为and o.customers_id != t.customer_id
,and o.customers_id = t.customer_id
我只会得到两个表中的客户(在本例中为 20 和 32)。