###実現したいこと
下記の products_table を読み込み、その下にある convert.sql をsqlまたはphpにて書き出したいのですが、どのたかヒントをください。
ちなみに「接続リストモデル」とは、レコードに親 ID を持たせて親子関係を表現するモデルのことです(※重要)
他のサイトにSQLを使ってSQLを生成するということを実際行っている達人がいらっしゃったので、いろいろ試してはいるのですがうまくいきません。
SQLの詳しい方ご教授ください。よろしくお願い致します。
Mysql は5.6、PHP は5.4です
SQL初心者
タグ #SQL #データベース #木構造 #入れ子集合モデル #RDB
###用意したテーブル(products_tbl)
hs_id | ct_01 | ct_02 | ct_03 | ct_04 | ct_05 | ct_06 | name | URL |
---|---|---|---|---|---|---|---|---|
1001 | A | AA | AAA | A-ct4 | name1001 | http://www | ||
1002 | A | AA | BBB | A-ct4 | name1002 | http://www | ||
1003 | A | AA | BBB | B-ct4 | name1003 | http://www | ||
1004 | A | AA | CCC | A-ct4 | name1004 | http://www | ||
1005 | A | BB | BBB | A-ct4 | name1005 | http://www | ||
1006 | A | BB | BBB | A-ct4 | name1006 | http://www | ||
1007 | A | BB | CCC | B-ct4 | name1007 | http://www | ||
1008 | B | AA | AAA | A-ct4 | A-ct5 | A-ct6 | name1008 | http://www |
1009 | B | BB | AAA | B-ct4 | B-ct5 | name1009 | http://www | |
1010 | B | BB | BBB | A-ct4 | C-ct5 | name1010 | http://www |
sql
1create table tbl( 2id int not null unique, 3parent_id int null, 4name varchar(30), 5url varchar(100), 6link tinyint, 7level int not null default 0, 8l int null, 9r int null 10);
###作りたいsql(convert.sql)親子関係をparent_idに
sql
1insert into tbl(id,parent_id,name,url,link) values 2( 1,null,'A','#',1), 3( 2,null,'B','#',1), 4( 3,1,'AA','#',1), 5( 4,1,'BB','#',1), 6( 5,2,'AA','#',1), 7( 6,2,'BB','#',1), 8( 7,3,'AAA','#',1), 9( 8,3,'BBB','#',1), 10( 9,3,'CCC','#',1), 11(10,4,'BBB','#',1), 12(11,4,'CCC','#',1), 13(12,5,'AAA','#',1), 14(13,6,'AAA','#',1), 15(14,6,'BBB','#',1), 16(15,7,'A-ct4','#',1), 17(16,8,'A-ct4','#',1), 18(17,8,'B-ct4','#',1), 19(18,9,'A-ct4','#',1), 20(19,10,'A-ct4','#',1), 21(20,11,'B-ct4','#',1), 22(21,12,'A-ct4','#',1), 23(22,13,'B-ct4','#',1), 24(23,14,'A-ct4','#',1), 25(24,21,'A-ct5','#',1), 26(25,22,'B-ct5','#',1), 27(26,23,'C-ct5','#',1), 28(27,24,'A-ct6','#',1), 29(28,15,'name1001','www',1), 30(29,16,'name1002','www',1), 31(30,17,'name1003','www',1), 32(31,18,'name1004','www',1), 33(32,19,'name1005','www',1), 34(33,19,'name1006','www',1), 35(34,20,'name1007','www',1), 36(35,27,'name1008','www',1), 37(36,25,'name1009','www',1), 38(37,26,'name1010','www',1);
###試したこと
SQLの「COUNT」と「GROUP BY」を使い結果を連結
回答3件
あなたの回答
tips
プレビュー