2

2番目のテーブルからのマッピングを維持しながら、2つの整数の国コード(出発地と目的地)を取得し、それらの整数コードを実際の2文字の国コードに置き換えようとしているテーブルビューがあります。

これが2つのテーブルの例です

国コード:

integerCode twoDigitCode   fullName
     0           US      United States
     1           BE        Belgium
     2           CN         China
     ...

ゾーン:

origin destination col3 col4
   0        1       x    y
   0        2       z    a
   1        2       u    b
   2        0       x    x
   2        1       i    f
   ...

私がやろうとしているのは、ビューで次のような結果を取得することです。

origin destination col3 col4
  US        BE       x   y
  US        CN       z   a
  ...

私はこのようないくつかの異なるSQLクエリを試しました

SELECT twoDigitCode as origin, twoDigitCode as destination
FROM country INNER JOIN Zone ON zone.destination = country.twoDigitCode 
WHERE zone.origin = country.twoDigitCode 

しかし、両方のルックアップからの結果を繰り返し続けているようです。

私の最初の質問は、SQLクエリでやろうとしていることさえできるかということです。2つ目は、このような結果を達成する方法を説明する良い例またはサイトです。

どんな助けでも大歓迎です。

4

3 に答える 3

0

わかりました。各コンポーネントを対応する2桁の国コードに置き換えることoriginで、Zonesテーブルの各レコードを「埋める」クエリを作成しようとしています。destinationつまり、起点と終点のデータをデコードしています。ゾーンテーブルで結合を2回実行できます。1回目は起点を入力し、2回目は宛先を入力します。

これは2つのクエリに分けることができます。

  1. ZonesテーブルをCountryCodesテーブルに結合して、原点をデコードします。例えば

    SELECT *
    FROM Zones, Country Codes
    WHERE origin = integerCode
    

    これにより、各行に次の列が含まれる一時テーブルが作成されます。

    (origin、destination、col3、col4、integerCode、twoDigitCode、fullName)

  2. 同じプロセスを使用して宛先をデコードします。つまり、手順1で作成したテーブルを国コードテーブルと再度結合しますが、今回はWHERE句で宛先をintegerCodeと一致させる必要があります。

免責事項:私は学生であり、専門家ではありません。私は、ソリューションの効率、正確性、または正確性については何も主張しません。

于 2013-03-09T01:30:20.203 に答える
0

2つのルックアップ列のそれぞれについて国コードテーブルに参加する必要があります。

SELECT co.twoDigitCode as origin, cd.twoDigitCode as destination, z.col3, z.col4
FROM zones z
INNER JOIN country co ON country.integerCode = z.origin
INNER JOIN country cd ON country.integerCode = z.destination

[注:originおよびdestination列がNULL可能である場合は、内部結合の代わりに左結合を使用します]

于 2013-03-09T00:06:17.347 に答える
0

必要なのは、2つの別々のJOINだけです。

SELECT c1.twoDigitCode origin, c2.twoDigitCode destination, z.col3, z.col4
FROM Zones z
JOIN Country c1 ON c1.integer.code=z.origin
JOIN Country c2 ON c2.integer.code=z.destination
于 2013-03-09T00:09:05.207 に答える