Michal Heneš
Michal Heneš

Reputation: 310

Mysql add column from different table

I have two tables:

| USER |
| _id  | - int id PK
| id   | - String id
| name |

| SUBSCRIBE |
|   user    |
| subscribe |

and I want to extract this data:

| _id | id | name | subscribe

Simple example

| USER |
|  1   | 10212551 | Mike
|  2   | 21022145 | Nick

| SUBSCRIBE |
|    1      |     2


get_info($user, $sub );

| EXPECTED RESULT |
|     $user       |  id  |  name  |  0 or 1 (false or true, if $sub has subscribed to $user)

My best try was with count():

SELECT u._id,u.id,u.name,u.email,u.country,count(s.subscribe) AS subscribe 
FROM user u,subscribe s 
WHERE u._id='$user' AND s.subscribe='$user' AND s.user='$sub'

But this works only if there's any record in subscribe table. So for

get_info(2,1)

it will give right result but for:

get_info(1,2)

there's nothing :/

Can somebody please help me with this ?

Upvotes: 2

Views: 48

Answers (1)

M Khalid Junaid
M Khalid Junaid

Reputation: 64496

Use left join in order to return user even if he has not subscribed and use case to check for subscribed

select u._id,u.id,u.name,u.email,u.country,
case when s.subscribe is not null then 1 else 0 end as subscribe 
from user u 
left join subscribe s on (u._id = s.user and s.subscribe ='$sub')
where u._id='$user' 

Demo

Upvotes: 1

Related Questions