mysqlで内部結合がどのように機能するのか疑問に思っていました。
私が行った場合
SELECT * FROM A a
INNER JOIN B b ON a.row = b.row
INNER JOIN C c ON c.row2 = b.row2
WHERE name='Paul';
最初に結合を行い、次に name = paul のものを選択しますか? こうやってやると、超・デューパー・スローだから。
行に沿って何かを行う方法はありますか:
SELECT * FROM (A a WHERE name='paul')
INNER JOIN B b ON a.row = b.row
INNER JOIN C c ON c.row2 = b.row2]
そのようにしようとすると、エラーが発生します。
または、A、B、および C に対して 1 つずつ、3 つの個別のクエリを使用する方がよいでしょうか? 例:
string query1 = "SELECT * FROM A WHERE name = 'paul'";
//send query, get data reader
string query2 = "SELECT * FROM b WHERE b = " + query1.b;
//send query, get data reader
string query3 = "SELECT * FROM C WHERE c = " + query1.c;
//send query, get data reader
明らかにこれは単なる疑似コードですが、要点を示していると思います。
どちらの方法が速い/推奨されますか?
テーブル構造の編集:
**tblTimesheet**
int timesheetID (primary key)
datetime date
varchar username
int projectID
string description
float hours
**tblProjects**
int projectID (primary key)
string project name
int clientID
**tblClients**
int clientID
string clientName
The join that I want is:
select * from tblTimesheet time
INNER JOIN tblProject proj on time.projectID = proj.projectID
INNER JOIN tblClient client on proj.clientID = client.clientID
WHERE username = 'paul';
そんな感じ