mysql:6921
From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Sat, 01 Feb 2003 12:15:36 +0900
Subject: [mysql 06921] Re: SQL 文について(仮)
こんにちは。 "Kondo Tatsuya" <konet@xxxxxxxxxx>さんの <001d01c2c977$5ef5bf50$3201a8c0@tatsuya> "[mysql 06920] SQL 文について(仮)" > 近藤と言います。 > > # 相応しいタイトル名が見つからず、仮として頂きました。 > > CREATE TABLE `table` (`table_id` TINYINT NOT NULL AUTO_INCREMENT, `from_user` TINYINT NOT NULL, `to_user` TINYINT NOT NULL, > `message` CHAR NOT NULL , PRIMARY KEY (`table_id`)) > INSERT `table` SET from_user = 1, to_user = 2, message = 'テスト1'; > INSERT `table` SET from_user = 3, to_user = 2, message = 'テスト2'; > INSERT `table` SET from_user = 1, to_user = 3, message = 'テスト3'; > > と、 > > CREATE TABLE `user` (`user_id` TINYINT NOT NULL, `name` CHAR NOT NULL ); > INSERT `user` SET user_id = 1, name = '田中太郎'; > INSERT `user` SET user_id = 2, name = '田中次郎'; > INSERT `user` SET user_id = 3, name = '田中三郎'; > > と言う、2つのデーブルがあるとして、結果として下記のように > なるようにSQL文を書きたいのですが、分からないでいます。 > もし、分かる方がいましたら助言頂けないでしょうか? > > 1 田中太郎 田中次郎 テスト1 > 2 田中三郎 田中次郎 テスト2 > 3 田中太郎 田中三郎 テスト3 > > 初めの数字である「1、2」は、AUTO_INCREMENTで生成された値です。 > > よろしくお願い致します。 それ以前に、色々と基本的な問題がありますよね。 ・テーブル名にtableやuserの様な名前は好ましくない。 ・バッククオートでテーブル名やカラム名を括っている ・カラムの型(TYNYINTの使用)や長さ(tableのmessageやuserのnameの長 さは1)に問題がある。 ・テーブルuserにプライマリキーやインデックスが付いていない。 ・INSERT文の構文が間違っている MySQLでクエリが動くかをチェックするのはもちろん、 MySQLのドキュメント を精読する、SQLのリファレンスを買って精読する、それらを基礎に色々考えて みる、を励行しましょう。 で、テーブル作成やデータ追加をこんな感じにしてみました。 create table t000 ( table_id TINYINT NOT NULL AUTO_INCREMENT, from_user TINYINT NOT NULL, to_user TINYINT NOT NULL, message CHAR(50) NOT NULL, PRIMARY KEY (table_id) ); create table u000 ( user_id TINYINT NOT NULL, name CHAR(50) NOT NULL ); insert into t000 (from_user,to_user,message) values(1,2,'test1'); insert into t000 (from_user,to_user,message) values(3,2,'test2'); insert into t000 (from_user,to_user,message) values(1,3,'test3'); insert into u000 (user_id,name) values(1,'tanaka tarou'); insert into u000 (user_id,name) values(2,'tanaka jirou'); insert into u000 (user_id,name) values(3,'tanaka saburo'); そして目的の表を出すのはこんな感じのクエリです。INNER JOINは不使用。 select t000.table_id, u000_0.name, u000_1.name, t000.message from t000,u000 as u000_0, u000 as u000_1 where t000.from_user = u000_0.user_id and t000.to_user = u000_1.user_id; 松枝知直 <tomom@xxxxxxxxxx> http://www.argus.ne.jp/~tomom/
6920 2003-02-01 07:23 ["Kondo Tatsuya" <kon] SQL 文について(仮) -> 6921 2003-02-01 12:15 ┗[ML account <ml@xxxxx] 6922 2003-02-01 12:38 ┗[shogo <sho@xxxxxxxxx] 6923 2003-02-01 13:23 ┗[ML account <ml@xxxxx] 6924 2003-02-01 14:06 ┣[shogo <sho@xxxxxxxxx] 6930 2003-02-02 13:47 ┃┗[ML account <ml@xxxxx] 6925 2003-02-01 14:23 ┗[Shingo Yamagai <yama] 6926 2003-02-01 17:17 ┗[<lavlav@xxxxxxxxxx> ]