Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
d4563199
Commit
d4563199
authored
Dec 03, 2014
by
Nobuo Kihara
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docs/guide-ja/db-query-builder.md - WIP [ci skip]
parent
bd0605d6
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
14 deletions
+13
-14
db-query-builder.md
docs/guide-ja/db-query-builder.md
+13
-14
No files found.
docs/guide-ja/db-query-builder.md
View file @
d4563199
...
@@ -55,42 +55,41 @@ $rows = $command->queryAll();
...
@@ -55,42 +55,41 @@ $rows = $command->queryAll();
クエリを構築する
クエリを構築する
----------------
----------------
In the following, we will explain how to build various clauses in a SQL statement. For simplicity,
以下に、SQL 文の中のさまざまな句を組み立てる方法を説明します。
we use
`$query`
to represent a
[
[yii\db\Query
]
] object.
話を単純にするために、
`$query`
という変数を使って
[
[yii\db\Query
]
] オブジェクトを表すものとします。
### `SELECT`
### `SELECT`
In order to form a basic
`SELECT`
query, you need to specify what columns to select and from what table:
基本的な
`SELECT`
クエリを形作るためには、どのテーブルからどのカラムをセレクトするかを指定する必要があります。
```
php
```
php
$query
->
select
(
'id, name'
)
$query
->
select
(
'id, name'
)
->
from
(
'user'
);
->
from
(
'user'
);
```
```
Select options can be specified as a comma-separated string, as in the above, or as an array.
セレクトのオプションは、上記のように、カンマで区切られた文字列で指定することも出来ますが、配列によって指定することも出来ます。
The array syntax is especially useful when forming the selection dynamically:
配列を使う構文は、セレクトを動的に形作る場合に、特に有用です。
```
php
```
php
$query
->
select
([
'id'
,
'name'
])
$query
->
select
([
'id'
,
'name'
])
->
from
(
'user'
);
->
from
(
'user'
);
```
```
> Info
: You should always use the array format if your `SELECT` clause contains SQL expressions.
> Info
|情報: `SELECT` 句が SQL 式を含む場合は、常に配列形式を使うべきです。
>
This is because a SQL expression like `CONCAT(first_name, last_name) AS full_name` may contain commas.
>
これは、`CONCAT(first_name, last_name) AS full_name` のように、SQL 式がカンマを含みうるからです。
>
If you list it together with other columns in a string, the expression may be split into several parts
>
そういう式を他のカラムと一緒に文字列の中に含めると、式がカンマによっていくつかの部分に分離されるおそれがあります。
>
by commas, which is not what you want to see.
>
それはあなたの意図するところではないでしょう。
When specifying columns, you may include the table prefixes or column aliases, e.g.,
`user.id`
,
`user.id AS user_id`
.
カラムを指定するときは、例えば
`user.id`
や
`user.id AS user_id`
などのように、テーブル接頭辞やカラムエイリアスを含めることが出来ます。
If you are using array to specify the columns, you may also use the array keys to specify the column aliases,
カラムを指定するのに配列を使っている場合は、例えば
`['user_id' => 'user.id', 'user_name' => 'user.name']`
のように、配列のキーを使ってカラムエイリアスを指定することも出来ます。
e.g.,
`['user_id' => 'user.id', 'user_name' => 'user.name']`
.
Starting from version 2.0.1, you may also select sub-queries as columns. For example,
バージョン 2.0.1 以降では、サブクエリをカラムとしてセレクトすることも出来ます。例えば、
```
php
```
php
$subQuery
=
(
new
Query
)
->
select
(
'COUNT(*)'
)
->
from
(
'user'
);
$subQuery
=
(
new
Query
)
->
select
(
'COUNT(*)'
)
->
from
(
'user'
);
$query
=
(
new
Query
)
->
select
([
'id'
,
'count'
=>
$subQuery
])
->
from
(
'post'
);
$query
=
(
new
Query
)
->
select
([
'id'
,
'count'
=>
$subQuery
])
->
from
(
'post'
);
// $query
represents the following SQL:
// $query
は次の SQL を表現する
// SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`
// SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`
```
```
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment