質問: T2.商品リストid GROUP BY T2.商品コード HAVING (COUNT(*) > 0) ``` | 商品コード | 在庫 | | --- | --- | | fruits01 | 6 | | fruits02 | 5 | | fruits03 | 0 | この二つのSQLをなげてそのあとに 商品コードをが紐付いているので単純にphpで引き算をして画面に表示させています。 もしSQLのみでできる方法があればご教授願いたいのですがよろしくお願いいたします。
回答: ``` SELECT 商品名, Sum(在庫) - (SELECT COUNT(商品リストid) FROM 仮押さえリスト Where 商品リストid= Goods.商品リストid) AS 在庫 FROM 商品リスト GROUP BY 商品リストid, 商品名; ``` -- 修正 ``` CREATE TABLE 商品リスト (`商品リストid` int,`商品コード` nchar(10),`商品名` nchar(4),`在庫` int,`サイズ` nchar(2)); INSERT INTO 商品リスト VALUES ( 1,' fruits01 ', 'りんご',5,'中' ) ,( 2,' fruits01 ', 'りんご',5,'大' ) ,( 3,' fruits02 ', 'みかん',5,'中' ) ,( 4,' fruits03 ', 'ぶどう',5,'中' ); CREATE TABLE 仮押さえリスト (id int ,商品リストid int); INSERT INTO 仮押さえリスト VALUES ( 1,2) ,( 2,3) ,( 3,3) ,( 4,1) ,( 5,3) ,( 6,3) ,( 7,3) ,( 8,1) ,( 9,1) ,( 10,1) ,( 11,1); ``` ``` SELECT 商品名, Sum(在庫) - (SELECT COUNT(商品コード) FROM (SELECT 商品コード FROM 仮押さえリスト JOIN 商品リスト ON 仮押さえリスト.商品リストid = 商品リスト.商品リストid) AS T Where T.商品コード = 商品リスト.商品コード) AS 在庫 FROM 商品リスト GROUP BY 商品名; ```