1

フィールドのあるpersonテーブルがあります。idemail

そして、フィールドを持つサブスクリプションperson_idテーブル: 、category_id

ある人がサブスクライブしている場合、サブスクリプションテーブルには少なくとも1つのエントリがテーブルに含まれます。

個人がサブスクライブされているかどうかに応じて、3番目の列が1または0の個人テーブルをクエリしたいと思います。

select p.id, p.email , [is_subscribed] 
from person p

is_subscribedサブスクリプションテーブルにエントリがある場合は1、それ以外の場合は0である必要があります。

どうすれば上記を達成できますか?

4

4 に答える 4

1

サブスクリプションとカウントで LEFT JOIN を使用する (複数のサブスクリプションの場合)

SELECT p.id,p.email,IF(COUNT(s.category_id)>0,1,0) as is_subscribed
FROM
person as p
LEFT JOIN subscription as s ON s.person_id=p.id
GROUP BY p.id
于 2012-09-04T10:37:34.663 に答える
0
   select distinct p.id, p.email, ifnull(sign(subscription.id),0) as is_subscribed
   from
       person
           left join subscriptions
           on person.id = subscriptions.person_id
于 2012-09-04T10:37:06.907 に答える
0
SELECT p.`id` , p.`email` , IF(COUNT(s.`id`)>0,1,0) AS count
FROM  `person` p
LEFT JOIN  `subscription` s ON s.`person_id` = p.`id` 
于 2012-09-04T10:38:55.823 に答える
0

select distinct person.id, person.email, cast((select count(id) from sub where id=1) as bit) from tab, sub where tab.id=1;

これは、MS SQL サーバー クエリです。mysql に必要な変更を加えます。

于 2012-09-04T10:43:36.000 に答える