適切なテーブルを作成した後、クエリは SQLite で問題なく実行されます。完全にエスケープされず、フォーマットされたクエリを次に示します。
SELECT
"x0"."ID",
"x0"."NAME",
"x0"."COUNTRYCODE",
"x0"."DISTRICT",
"x0"."POPULATION"
FROM
"CITY" "x0"
INNER JOIN
"COUNTRY" "x1"
ON
"x0"."COUNTRYCODE" = "x1"."CODE"
WHERE ("x1"."NAME" = ?)
テストする DDL と挿入は次のとおりです。
CREATE TABLE Country (CODE text, Name Text);
CREATE TABLE CITY (ID int, Name text, countrycode text, district text, population int);
INSERT INTO Country VALUES ('US', 'United States');
INSERT INTO Country VALUES ('AU', 'Australia');
INSERT INTO City VALUES (1, 'Albany', 'US', 'NY', 1000000);
INSERT INTO City VALUES (2, 'Atlanta', 'US', 'GA', 2000000);
INSERT INTO City VALUES (3, 'Washington', 'US', 'DC', 500000);
INSERT INTO City VALUES (4, 'Melborne', 'AU', 'A', 40000);
INSERT INTO City VALUES (5, 'Sydney', 'AU', 'B', 60000);
完全な例 (コンソールで実行されるため、クエリはパラメーター化されませんが?
、SQLite のパラメーター化は受け入れられます)。
C:\Windows\System32>sqlite3
SQLite version 3.7.6.3
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE Country (CODE text, Name Text);
sqlite> CREATE TABLE CITY (ID int, Name text, countrycode text, district text, population int);
sqlite> INSERT INTO Country VALUES ('US', 'United States');
sqlite> INSERT INTO Country VALUES ('AU', 'Australia');
sqlite> INSERT INTO City VALUES (1, 'Albany', 'US', 'NY', 1000000);
sqlite> INSERT INTO City VALUES (2, 'Atlanta', 'US', 'GA', 2000000);
sqlite> INSERT INTO City VALUES (3, 'Washington', 'US', 'DC', 500000);
sqlite> INSERT INTO City VALUES (4, 'Melborne', 'AU', 'A', 40000);
sqlite> INSERT INTO City VALUES (5, 'Sydney', 'AU', 'B', 60000);
sqlite> SELECT
...> "x0"."ID",
...> "x0"."NAME",
...> "x0"."COUNTRYCODE",
...> "x0"."DISTRICT",
...> "x0"."POPULATION"
...> FROM
...> "CITY" "x0"
...> INNER JOIN
...> "COUNTRY" "x1"
...> ON
...> "x0"."COUNTRYCODE" = "x1"."CODE"
...> WHERE ("x1"."NAME" = 'United States');
1|Albany|US|NY|1000000
2|Atlanta|US|GA|2000000
3|Washington|US|DC|500000
sqlite>