I have a "Subscriber" table :
| S_ID | con |
|---|---|
| 1 | 111 |
| 2 | 222 |
| 3 | 333 |
| 4 | 444 |
| 5 | 555 |
also,I have two tables - "product_subscriber" and "service_subscriber" and prod_name and ser_name have the same name
product_subscriber:
| s_id | id | prod_name |
|---|---|---|
| 1 | 20 | offer 1 |
| 1 | 21 | offer 2 |
| 2 | 20 | offer 1 |
| 3 | 21 | offer 2 |
service_subscriber:
| s_id | id | ser_name |
|---|---|---|
| 1 | 10 | offer 1 |
| 1 | 11 | offer 2 |
| 3 | 11 | offer 2 |
| 3 | 10 | offer 1 |
| 5 | 10 | offer 1 |
I want to get table like this:
| s_id | ser_name | prod_name |
|---|---|---|
| 1 | offer 1 | offer 1 |
| 1 | offer 2 | offer 2 |
| 2 | offer 1 | |
| 3 | offer 2 | offer 2 |
| 3 | offer 1 | |
| 5 | offer 1 |
Below is the code, but for users who have more than two offers, for example s_id = 1, Incorrectly matched, something like that
| s_id | ser_name | prod_name |
|---|---|---|
| 1 | offer 1 | offer 2 |
| 1 | offer 2 | offer 2 |
| 1 | offer 2 | offer 1 |
| 1 | offer 1 | offer 1 |
SELECT p.pid,
p.mobile,
o.of_name,
s.ser_name
FROM person p
LEFT OUTER JOIN offer o
ON p.pid = o.pid
LEFT OUTER JOIN service s
ON p.pid = s.pid
WHERE o.pid IS NOT NULL
OR s.pid IS NOT NULL