2

こんにちは、別のテーブルで同じ外部キーを2回参照する2つのテーブルを持つSQLテーブルがあります...次のようなものです

販売テーブル

idSales idClient1 idClient2
1       1         2

クライアント テーブル

idClient ClientName
1        Bob
2        Mick

SALES テーブルを CLIENT テーブルに結合し、次のようにデータを返したいと考えています。

idSales idClientClientName1 idClientClientName2
1       Bob                 Mick

このためのSQLを手伝ってくれる人はいますか? 結合であいまいな列名エラーが発生します。

ありがとうございました

4

3 に答える 3

8

tableに依存するtable には 2 つの列があるため、基本的に table Clienton tableを 2 回結合する必要があります。SalesSalesClient

SELECT  a.idSales,
        b.ClientName ClientName1,
        c.ClientName ClientName2
FROM    Sales a
        INNER JOIN Client b
            ON a.idClient1 = b.idClient
        INNER JOIN Client c
            ON a.idClient2 = c.idClient

結合についてさらに詳しく知りたい場合は、以下のリンクにアクセスしてください。

ただし、列の 1 つまたは両方の列がnullableの場合、他のテーブルで少なくとも 1 つの一致がある場所のみを選択するため、INNER JOINすべてのレコードが得られるわけではありません。Sales代わりに を使用しますLEFT JOIN

于 2013-05-20T13:43:36.747 に答える
1

このような場合、結合されたテーブルでどのエンティティにリンクしているかを示唆するテーブル エイリアスを使用することを付け加えるかもしれません。たとえば、外部キーがアドレス テーブルに対するもので、アドレスとworkアドレスがある場合、2 つの結合にとのHomeテーブル エイリアスを使用します。あなたの場合、つまり、hw

Selext s.idSales,
    c1.ClientName ClientName1,
    c2.ClientName ClientName2
From Sales s
    Join Client c1
        On c1.idClient = s.idClient1
    Join Client c2
        On c2.idClient = s.idClient2
于 2013-05-20T13:50:01.897 に答える
0

将来この質問に遭遇する可能性のある初心者の SQL 関係者には、AS の単語を追加すると役立ちます。これにより、さらに明確になります。

SELECT
Sale.idSales,
c1.ClientName AS ClientName1,
c2.ClientName AS ClientName2
FROM
Sales AS Sale
INNER JOIN Client AS c1 ON Sale.idClient1 = c1.idClient
INNER JOIN Client AS c2 ON Sale.idClient2 = c2.idClient
于 2013-05-20T14:47:56.103 に答える