0

質問が基本的すぎる場合は申し訳ありません。私は TSQL を独学していますが、次のことがどのように行われるかわかりません。

私はこのクエリを持っています:

SELECT table1.name, table2.city AS city, table2.province
FROM table1 LEFT OUTER JOIN table2
ON table1.id = table2.id
WHERE table1.name NOT LIKE 'test'
ORDER BY city DESC 

そして、これに別のものを追加したい:

SELECT table3.country 
FROM table3 LEFT JOIN table2 
ON table3.id = table2.id
WHERE table2.city = city

だから私はこの結果を持つことができます:

名前 -- 都市 -- 州 -- 国

どうすればそうできますか?

どうもありがとう!

4

3 に答える 3

0

あなたは次のようにそれを行うことができます:

SELECT 
    table1.name, 
    table2.city AS city, 
    table2.province,
    table3.country
FROM 
    table1 
    LEFT OUTER JOIN table2
    ON table1.id = table2.id
    RIGHT JOIN table3
    ON table2.id = table3.id
WHERE 
    table1.name NOT LIKE 'test'
ORDER BY city DESC
于 2012-11-12T10:46:40.000 に答える
0

あまりにも基本的な質問はありません!私は SQL の専門家であり、非常に基本的な Java Script の質問をするのに忙しいです。Web で見つけたものを理解しようとしてイライラするよりも、直接質問したほうがよいでしょう。あなたが努力している限り、誰もが満足します。

あなたが要求したことは、実際にはまったく基本的なものではなく、さまざまな方法で解釈できます。いくつかの異なる SQL を使用すると、いくつかの異なる結果が得られます。

まず、この部分:

WHERE table1.name NOT LIKE 'test'

ワイルドカード文字 (%、_) なしで LIKE を使用するのは珍しいことです。正確に 'test' であるレコードを除外したい場合は、like を使用せず、代わりにこれを使用します。

WHERE table1.name <> 'test'

<> は「異なる」を意味します

次のテーブルの外部結合についてですが、まず、外部結合してもよろしいですか?

これはまさにあなたが求めているものではありませんが、このコードの後に​​いるかもしれません:

SELECT table1.name, table2.city AS city, table2.province
FROM table1 LEFT OUTER JOIN table2
ON table1.id = table2.id
LEFT OUTER JOIN table3
ON table1.id = table3.id
WHERE table1.name NOT LIKE 'test'
ORDER BY city DESC 

もちろん、これには次のビットがありません。

AND table2.city = city

この場合、列 city をリテラル文字列 'city' に一致させようとしていますか、それとも列 city に一致させようとしていますか? その場合、table1 または table2 の列です。

質問を解釈する方法はわずかに異なります。これは、異なる SQL を記述することを意味し、異なる答えが得られます。

だから、これについて考えてください:

  1. table1 に対して table2 に常に一致するレコードがありますか? その場合は、OUTER JOIN の代わりに INNER JOIN を使用して、複雑さを軽減できます。
  2. テーブルがどのように接続されているかを示す線で、テーブルの図を描く必要があります。

また、テーブルにあまり一般的でない名前を付けると、何をしようとしているのかを視覚化するのに役立ちます。

于 2012-11-12T10:55:12.327 に答える
-1

1 つの SQL ステートメントで 2 つの結合を使用するだけです。

SELECT table1.name, table2.city AS city, table2.province, table3.country
FROM table1
LEFT OUTER JOIN table2 ON table1.id = table2.id
LEFT OUTER JOIN table3 ON table3.id = table2.countryid
WHERE table1.name NOT LIKE 'test' and table2.city = 'Cityname'
ORDER BY city DESC 

(すみません、チェックする時間がありませんでした。コメントありがとうございます。コードは改訂されています。)

于 2012-11-12T10:48:29.650 に答える