2

私は INVOICE という名前のテーブルを持っています どこから ADDRESSID を取得しますか

Addressという名前の別のテーブルがあります

ADDRESSID         ADDRESS
2                 BB
2                 BC

CC と BC の値は、ADDRESSVALUE という名前の別のテーブルにあり、ADDRESSID に基づいています。

ID      CODE    VALUE
1        BB      BlindFold
2        BC      Bucharest

今、内部結合を使用してテーブルをクエリします

SELECT AC.VALUE AS ADDRESS 
FROM ADDRESS AS OT
INNER JOIN INVOICE AS OM ON  OM.ADDRESSID = OT.ADDRESSID
INNER JOIN ADDRESSVALUE AS AC ON OT.ADDRESS = AC.CODE
WHERE OM.ADDRESSID = 2

私は結果を得ています

Blindfold
Blindfold

しかし、そうあるべきです

BlindFold
Bucharest
4

4 に答える 4

1

(更新) 探している結果を取得する 1 つの方法:

SELECT AC.VALUE AS ADDRESS 
FROM ADDRESS AS OT
INNER JOIN INVOICE AS OM ON  OM.ADDRESSID = OT.ADDRESSID
INNER JOIN ADDRESSVALUE AS AC ON OT.ADDRESS = AC.CODE
WHERE OM.ADDRESSID = @AddressID

ここでSQLFiddle 。

于 2013-07-30T07:46:36.707 に答える
0

これを試して

SELECT C.VALUE AS ADDRESS
FROM ADDRESS A
INNER JOIN INVOICE B ON A.ADDRESSID=B.ADDRESSID
INNER JOIN ADDRESSVALUE C ON A.ADDRESSID=C.ADDRESSID 
    AND A.ADDRESS=C.CODE
WHERE B.ADDRESSID=2

たとえば、 SQLFiddleを見ることができます 。

于 2013-07-30T11:40:43.187 に答える
0

Address テーブルと Addressvalue テーブルが、両方のテーブルに存在する列 ADDRESSID を介して結合されている必要がある場合は、select ステートメントに次のようなものを含める必要があります。

ADDRESS.ADDRESSID = ADDRESSVALUE.ADDRESSID
于 2013-07-30T07:47:16.077 に答える
0

結合せずに直接使用!

SELECT OM.VALUE AS ADDRESS 
FROM INVOICE AS OM WHERE OM.ADDRESSID = @AddressID

--

SELECT value FROM second_table WHERE code IN
(SELECT address FROM first_table WHERE addressid = @AddressID);
于 2013-07-30T07:37:20.260 に答える