3

2 つのテーブルからデータを選択しようとしています。
-warehouse には、warehouseId、warehouseName の 2 つの列があります。 -transportation には、
transporter、warehouseId1、warehouseId2 の 3 つの列が
あります。

select a.transporter, b.warehouseName as warehouse1, b.warehouseName as warehouse2
from transportation a, warehouse b
where a.warehouseId1 = b.warehouseId and a.warehouseId2 = b.warehouseId
4

2 に答える 2

7

warehouseに2 回追加する必要がありますFROM(2 つの異なるエイリアスを使用することを忘れないでください):

SELECT
    a.transporter,
    b1.warehouseName as warehouse1,
    b2.warehouseName as warehouse2
FROM
    transportation a,
    warehouse b1,
    warehouse b2
WHERE
        a.warehouseId1 = b1.warehouseId
    AND
        a.warehouseId2 = b2.warehouseId

またはJOIN構文を使用します。

SELECT
    a.transporter,
    b1.warehouseName AS warehouse1,
    b2.warehouseName AS warehouse2
FROM
    transportation a
JOIN
    warehouse b1 ON a.warehouseId1 = b1.warehouseId
JOIN
    warehouse b2 ON a.warehouseId2 = b2.warehouseId
于 2013-07-10T16:10:07.577 に答える
2

subselect を使用する方が明確な場合があります。

SELECT 
    a.transporter,
    (SELECT warehouseName FROM warehouse WHERE warehouseId=a.warehouseId1) AS warehouse1,
    (SELECT warehouseName FROM warehouse WHERE warehouseId=a.warehouseId2) AS warehouse2
FROM
    transportation a

これは通常、MarcinJuraszek のソリューションとまったく同じクエリ プランを使用しますが、何が起こっているかについては少し明確になる可能性があります。

于 2013-07-10T16:19:48.907 に答える