/// BANGBOO BLOG ///
/// BANGBOO BLOG ///
March 3, 2010 01:29 AM
CSS Selectors
■* 全称セレクタすべての要素h3 * em { color: red } ■ 子孫セレクタ孫やそれ以下の要素に対しても有効h1 em { color: blue } <h1>携帯電話、<i>特に<em>i-mode</em></i>の爆発的な普及について</h1>em要素 は青く表示、樹構造内で h1要素 に入れ子になっている em要素 はすべて対象 ■> 子セレクタある要素の直接の子供要素だけbody > p { line-height: 1.3pt }<body><ul>  <li>    <p>適用外</p>  </li></ul><p>適用</p&…
コメント (0)

November 11, 2009 10:38 PM
Fundamentals
-無理が通れば道理が引っ込む-すべて国民は、法の下に平等であって、人種、信条、性別、社会的身分又は門地により、政治的、経済的又は社会的関係において、差別されない-柔能く剛を制す-ヒポクラテスの誓い -推定有罪 うっとおしきは罰するプププ←今ココwww-科学-パレートの法則、しかし神は細部に宿る-悪貨は良貨を駆逐する-マズローの欲求段階説-自由こそ正義-アイデア-Get things done with speed!!-モダン⇔ポストモダン→ニヒリズム…
コメント (0)

November 11, 2009 06:54 PM
Ora Ora Ora Ora Ora
おっすオラ忘れ易いルール、無駄無駄無駄無駄無駄無駄ッ■DMLDB製品毎のnullの扱いを事前に調べる(word != ‘検索値'やword = nullではnullにヒットしない、is not nullを使う等)null値はもっとも小さな値、or大きな値(nullが含まれるかnullの件数を先に確認しておく、下に例を載せた)集計関数はNULLを無視する(下に例を載せた)文字列は'で囲む取得したいカラムは集計関数に使われるカラムを除いて全てGroupBy句に入れる集計関数の条件はhaving句を使用する(where句は元のデータに対するもの)、having句には集計関数が入る(下に例を載せた)SQLワイルドカード:複数文字%,1文字_WINワイルドカード:複数文字*,1文字?エスケープ文字はescape句で設定。like句の後ろにつく。escape '\'日付と文字列の変換が必要To_cha…

CREATE TABLE `fun_test_data` (
  `no` bigint(20) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL default '',
  `department` varchar(255) NOT NULL default '',
  `boss` varchar(255) NOT NULL default '',
  `salary` tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (`no`)
) ENGINE=InnoDB
  DEFAULT CHARACTER SET utf8
   COLLATE utf8_unicode_ci;

INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('あああ', '営業', 'かかか', 25);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('いいい', '営業', 'かかか', 30);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('ううう', '営業', 'かかか', 35);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('えええ', '営業', 'かかか', 23);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('おおお', '営業', 'かかか', 60);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('かかか', '営業', 'かかか', 55);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('ききき', '営業', 'かかか', 40);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('くくく', '営業', 'かかか', 34);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('けけけ', '営業', 'かかか', 33);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('こここ', '営業', 'かかか', 52);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('さささ', 'マーケ', 'さささ', 41);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('ししし', 'マーケ', 'さささ', 30);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('すすす', 'マーケ', 'さささ', 33);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('せせせ', 'マーケ', 'せせせ', 44);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('そそそ', 'マーケ', 'せせせ', 53);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('たたた', '開発', 'せせせ', 33);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('ちちち', '開発', 'せせせ', 39);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('つつつ', '開発', 'せせせ', 44);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('ててて', '開発', 'せせせ', 50);
INSERT INTO `fun_test_data`(`name`, `department`, `boss`, `salary`) VALUES ('ととと', '開発', 'かかか', 60);

==============
nullが最小か調べる
select * from x_data order by value

CREATE TABLE IF NOT EXISTS `x_data` (

  `no` int(11) NOT NULL AUTO_INCREMENT,

  `value` int(11) DEFAULT NULL,

  `value2` int(11) DEFAULT NULL,

  `v_no_null` int(11) NOT NULL,

  PRIMARY KEY (`no`)

) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;

INSERT INTO `x_data` (`no`, `value`, `value2`, `v_no_null`) VALUES

(1, 100, NULL, 0),

(2, NULL, 200, 0),

(3, NULL, 200, 5),

(4, NULL, 100, 10),

(5, NULL, 300, 0),

(6, 200, NULL, 0),

(7, 200, NULL, 5),

(8, 100, NULL, 10);

==============

CREATE TABLE IF NOT EXISTS `x_bill` (

  `no` bigint(20) NOT NULL AUTO_INCREMENT,

  `user_no` bigint(20) NOT NULL DEFAULT '0',

  `total_bill` bigint(20) NOT NULL DEFAULT '0',

  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

  PRIMARY KEY (`no`)

) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;


INSERT INTO `x_bill` (`no`, `user_no`, `total_bill`, `date`) VALUES

(1, 1, 1000, '2021-01-01 00:00:00'),

(2, 1, 1500, '2021-01-02 00:00:00'),

(3, 1, 500, '2021-01-03 00:00:00'),

(4, 2, 1100, '2021-01-01 00:00:00'),

(5, 2, 1700, '2021-01-02 00:00:00'),

(6, 2, 800, '2021-01-03 00:00:00'),

(7, 3, 1100, '2021-01-01 00:00:00'),

(8, 3, 1700, '2021-01-02 00:00:00'),

(9, 3, 800, '2021-01-03 00:00:00'),

(10, 3, 800, '2021-01-04 00:00:00');


CREATE TABLE IF NOT EXISTS `x_purchase` (

  `no` bigint(20) NOT NULL AUTO_INCREMENT,

  `p_no` bigint(20) NOT NULL DEFAULT '0',

  `item` bigint(20) NOT NULL DEFAULT '0',

  `price` bigint(20) NOT NULL DEFAULT '0',

  `unit` bigint(20) NOT NULL DEFAULT '0',

  PRIMARY KEY (`no`)

) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=18 ;


INSERT INTO `x_purchase` (`no`, `p_no`, `item`, `price`, `unit`) VALUES

(1, 1, 1, 100, 10),

(2, 2, 1, 100, 10),

(3, 2, 2, 100, 5),

(4, 3, 2, 100, 5),

(5, 4, 3, 300, 3),

(6, 4, 1, 100, 2),

(7, 5, 3, 300, 5),

(8, 5, 2, 100, 2),

(9, 6, 1, 100, 3),

(10, 6, 2, 100, 2),

(11, 6, 3, 300, 1),

(12, 7, 1, 100, 11),

(13, 8, 2, 100, 17),

(14, 9, 3, 300, 2),

(15, 9, 1, 100, 2),

(16, 10, 3, 300, 2),

(17, 10, 2, 100, 2);

結合が増えると多対多がでる、sum(total_bill)は多対多なのでダメ

SELECT name, sum(total_bill) FROM x_employee

 RIGHT JOIN x_bill ON x_employee.no = x_bill.user_no

 RIGHT JOIN x_purchase ON x_bill.no = x_purchase.p_no

 GROUP BY name ORDER BY sum(total_bill) DESC


1対多のsum(price * unit)の細かい表をの方を使う

SELECT name, SUM(price * unit) FROM x_employee

RIGHT JOIN x_bill ON x_employee.no = x_bill.user_no

RIGHT JOIN x_purchase ON x_bill.no = x_purchase.p_no

GROUP BY name

ORDER BY SUM(price * unit) DESC


多対多が分かる(結合がツリー状で枝の表は使える(幹と枝で1対多):田中の購入商品数分の表は正、だが途中の請求額は重複(中間が枝化して多対多)していて使えない)

SELECT * FROM x_employee

 RIGHT JOIN x_bill ON x_employee.no = x_bill.user_no

 RIGHT JOIN x_purchase ON x_bill.no = x_purchase.p_no


コメント (0)

ナビ:  <  69 | 70 | 71 | 72 | 73  >
(C)Blog.Bangboo.COM