chatgptで
「sqlite3でtwitterみたいなサイトのテーブル設計をして。
上記のTwitterのようなサイトで特定のユーザーのタイムラインを表示するクエリの例を教えて」
って聞くと、こういうの表示されるけど、こんなの絶対パッと思いつかんやろ!!
特にJOIN2回使うのが全然分からん。なんならJOIN1回の部分も分からん
っていうか、hatena君、sqlのシンタックスハイライトするとインターナルサーバーエラー返してくるんだが...
class Foo def bar'baz' # return baz end end
sqlだけっぽい......
CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL, email TEXT NOT NULL UNIQUE, password TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE tweets ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, body TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users (id) ); CREATE TABLE follows ( follower_id INTEGER NOT NULL, followed_id INTEGER NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (follower_id, followed_id), FOREIGN KEY (follower_id) REFERENCES users (id), FOREIGN KEY (followed_id) REFERENCES users (id) ); SELECT tweets.id, tweets.body, tweets.created_at, users.username FROM tweets JOIN follows ON tweets.user_id = follows.followed_id JOIN users ON tweets.user_id = users.id WHERE follows.follower_id = [特定のユーザーID] ORDER BY tweets.created_at DESC;
Windows にWAMPみたいなパッケージいれたら、MySQLが入るやん? それでMySQLのコマンドラインで SQLたたける
環境構築はできてる SELECT FROM * FROM table; みたいなのも分かる けど そっから先のTwitterみたいなの作ろうとした時どういうテーブル作ってどういうクエリでSELECTすれば良いのか分からん
時刻 ツイート の2列のテーブル作って、 ガンガンツイートを INSERT しまくる。 SELECT は、データの溜まったテーブルから、時刻の新しいやつ10個だけ SELECT する。
SELECT 時刻,ツイート FROM ツイーツ ORDER BY 時刻 ASC LIMIT 10; とかだろ。たぶん それは分かる テーブル2枚とかになった瞬間脳が壊れる
テーブル2枚になったら、 JOIN させてとけばええんや。
DBは初学者にとって環境構築と使われ方のイメージつくまでがしんどいよな
環境構築はできてる ちなみにMacでSQLite3
俺はMS Accessをいじって覚えたな。 とりあえずローカルでDBを動かす環境を作るか、オンラインで手軽に試せる環境を探すか。
オンラインのやつ試してみる 前にオンラインの試した時にエディタの入力補完が効かなくて手打ち辛くてやめちゃった
paiza講座やドットインストールで学べばええで
paizaとドットインストール試してみる テーブルの設計とかテーブル2枚とか3枚のクエリとかも試せるのかな JOINとかGROUP BYとかがムズい......
とりあえずidと名前だけ持ったユーザーtableを作って それを100件くらいinsertしてみて いろんな条件でselectしてみて 次にidと本文と日付だけ持ったツイートtableを作って それを100件くらいin...
面倒くさいな
それ試してみるわ 手を動かさないと覚えないよな
5回くらいchatGPTに教えてもらったら感覚つかめる