2

したがって、2 つのテーブルに対して SQL 結合コマンドを実行しようとしていますが、探していない出力が得られます。

> SELECT        owners_table.ownerID, tenant_table.tenantID, tenant_table.apt_num, tenant_table.last_name, owners_table.last_name AS owner_last, tenant_table.phone, 
                         owners_table.phone AS owner_phone
FROM            owners_table INNER JOIN
                         tenant_table ON tenant_table.apt_status = 'ARCHIVED' AND owners_table.owner_status = 'ARCHIVED'
ORDER BY owners_table.apt_num"

出力では、「stralman」のレコードが 5 つ表示されますが、1 つしかありません。join 句がそれを一致させようとしていることは理解していますが、対応する 5 つのレコードに対してストラルマンを 1 人だけ表示する方法はありますか?

http://i.stack.imgur.com/mfbWW.png

テーブル構造: 1) テナント テーブル: http://i.stack.imgur.com/BUxMH.png
2) 所有者テーブル: http://i.stack.imgur.com/QqoKx.png

4

3 に答える 3

5

結合で 2 つのテーブル間の関係を確立しません。次のように、条件の片側に最初のテーブルの式を、条件の反対側にもう一方のテーブルの式を含めるには、ON 句に少なくとも 1 つの条件が必要です。

FROM owners_table 
INNER JOIN tenant_table ON tenant_table.apt_num = owners_table.apt_num

与えられた情報からは、所有者をテナントに関連付けるのに必要な他の列を知ることができないため、これはニーズに適した結合条件ではない可能性があることに注意してください。

于 2013-06-21T16:35:25.657 に答える
1

(スキーマから)結合はOwnerIdにある必要があるため、クエリは次のようになります。

SELECT owners_table.ownerID, 
    tenant_table.tenantID, 
    tenant_table.apt_num, 
    tenant_table.last_name, 
    owners_table.last_name AS owner_last, 
    tenant_table.phone, 
    owners_table.phone AS owner_phone
FROM owners_table 
INNER 
JOIN tenant_table 
    ON tenant_table.OwnerID = owners_table.OwnerID
WHERE tenant_table.apt_status = 'ARCHIVED' 
AND owners_table.owner_status = 'ARCHIVED'
ORDER BY owners_table.apt_num
于 2013-06-21T17:58:20.320 に答える
0

返されたレコードの数を除いて、クエリに関するすべてが正しい場合は、SELECT という単語の後に DISTINCT を追加してみてください

于 2013-06-21T16:37:22.790 に答える