私は SQL データベースで約 20 年間働いてきましたが、クエリをマップする Knex の方法を理解するのに苦労しているようです。誰かが正しいコードを取得するのを手伝ってくれますか?
nodejs アプリケーションで使用したい次の SQL クエリがあります。
SELECT p.id, p.project_number, p.project_name, p.start_date, p.end_date,
o.name, o.email_addr,
c.company, c.email_addr AS company_email, c.first_name, c.last_name
FROM projects p
INNER JOIN owners o ON o.id = p.owner_id
INNER JOIN clients c ON c.id = p.client_id
KnexJS (0.7.5) のドキュメントには、私のクエリでは次のような例が示されています。
knex.from('projects').innerJoin('owners', 'owners.id', 'projects.owner_id')
.innerJoin('clients', 'clients.id', 'projects.client_id');
ドキュメントで見つけられないことがいくつかあります。
1) 含めたい列を選択するにはどうすればよいですか? プロジェクト、クライアント、および所有者にはそれぞれ 20 ~ 50 の列があり、すべてに関心があるわけではありません。メインテーブルから列を選択することは明らかですが ( select()またはcolumn()を使用)、結合されたテーブルから列を選択する方法は?
2) 一部の列は同じ名前です。名前の競合を回避するにはどうすればよいですか (つまり、他のテーブルの列にプレフィックスを追加するなど)? Knex がカラム エイリアス (... AS ...) を生成する方法を調べましたが、それがより複雑なクエリの実行可能なオプションであるかどうかはわかりません。(上記のような比較的単純なクエリでも)