エントリのリストを選択する必要がありますが、2 つの異なるテーブルで一致するフィールドを持つエントリをスキップする必要があります。これが私のDB構造です
注文:
| 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 |
したがって、Orders テーブルにあるすべての顧客を選択する必要がありますが、Testimonials テーブルにある場合はスキップする必要があります。上記の例では、顧客 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) にいる顧客のみが取得されるため、正しい方向に進んでいると感じています。