プロが教えるわが家の防犯対策術!

MySQL5に、以下のような月刊雑誌目次データがあります。
mysequenceが通巻第●号、のような数字を表しています。
最新の3号(あるいは6号、12号)だったら
仮想カラム myflg=1と印をつけるSELECT文をご教示
いただけないでしょうか。

データ例では138~236号と途中を省略しまくってますが
実際は1号から数百号まであり、最新の3冊(あるいは6冊、12冊)
だったら、

if ($myflag = 1 ){
echo "<img src='./image/最新の3号.gif'>";
}

みたいな使い方をしたい次第です、よろしくお願い致します。

select *, (if( select (max(mysequence) - 3),1,0 ) as myflg) from mymagazine

みたいな雰囲気かと思いますが、left joinとか難しい照会が
必要でしょうか。よろしくお願い致します。



create table mymagazine (
mycode int(5) unsigned not null auto_increment comment '管理コード',
mypubyear int(4) default null comment '発行年',
mypubmonth int(2) default null comment '発行月',
mysequence int(3) default null comment '号',
mysortno int(2) default null comment '巻毎のソート番号',
mycategorycode int(2) default null comment '分類コード',
mytheme varchar(900) default null comment 'テーマ',
primary key( mycode )
) engine=InnoDB default charset=utf8 auto_increment =1;

insert into mymagazine ( mypubyear , mypubmonth , mysequence , mysortno , mycategorycode , mytheme )values(2005,7,138,1,99,''),(2005,7,138,2,1,'サッカー'),(2005,7,138,3,1,'サッカー'),(2005,7,138,14,16,''),(2005,7,138,15,15,''),(2005,8,139,4,1,'野球'),(2005,8,139,5,1,'野球'),(2005,8,139,17,17,''),(2005,8,139,18,17,''),(2005,9,140,1,99,''),(2005,9,140,2,1,'テニス'),(2005,9,140,3,1,'バスケ'),(2005,9,140,4,1,'バスケ'),(2005,9,140,5,1,'バスケ'),(2005,9,140,6,1,'水泳'),(2005,9,140,7,2,''),(2005,9,140,8,14,''),(2005,9,140,9,13,''),(2005,11,142,2,1,'柔道'),(2005,11,142,3,1,'剣道'),(2005,11,142,4,1,'剣道'),(2005,11,142,5,8,''),(2005,11,142,6,2,''),(2006,1,144,2,1,'卓球'),(2006,1,144,3,1,'卓球'),(2006,1,144,4,1,'バレー'),(2007,9,236,2,1,'陸上'),(2007,9,236,3,1,'陸上'),(2007,9,236,4,1,'陸上'),(2007,9,236,5,4,'ソフト'),(2007,9,236,6,5,'');

A 回答 (1件)

これでよくない?



select t1.*,if(isnull(t2.mysequence),0,1) as myflg from mymagazine as t1
left join (select distinct mysequence from mymagazine order by mysequence desc limit 3) as t2
on t1.mysequence=t2.mysequence
    • good
    • 0
この回答へのお礼

yamabejpさん、うまくいきました、ありがとうございました!

マスター(mymaster)とも接続したくて、
~~mymagazine as t1, mymaster as t3 としてて30分ハマりました(^^;;;

~~ on t1.mysequence=t2.mysequence, mymaster as t3

とするのが正解だったのですね(激恥)

ともかく非常に助かりました、ありがとうございました。

お礼日時:2014/03/05 00:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!