1. ホーム
  2. mysql

[解決済み] mysqlで同じテーブルを2回結合するには?

2022-10-17 20:16:22

質問

私は2つのテーブルを持っています。1つ(ドメイン)は、ドメインID、ドメイン名(dom_id、dom_url)を持っています。

もう1つは実際のデータを含み、そのうちの2つの列はTOとFROMのドメイン名を必要とします。だから私は2つの列rev_dom_fromとrev_dom_forを持って、その両方がドメインテーブルから、ドメイン名IDを格納します。

シンプルです。

次に、Web ページに両方のドメイン名を実際に表示する必要があります。LEFT JOIN domains ON reviews.rev_dom_for = domains.dom_url クエリによって、どちらか一方を表示する方法は知っていますが、次に dom_url をエコー出力し、それによって rev_dom_for 列でドメイン名をエコー出力します。

しかし、どのようにして、dom_rev_from列に、2番目のドメイン名をエコーアウトさせるのでしょうか?

どのように解決するには?

の場合は、別の結合を使用します。

SELECT toD.dom_url AS ToURL, 
    fromD.dom_url AS FromUrl, 
    rvw.*

FROM reviews AS rvw

LEFT JOIN domain AS toD 
    ON toD.Dom_ID = rvw.rev_dom_for

LEFT JOIN domain AS fromD 
    ON fromD.Dom_ID = rvw.rev_dom_from

EDIT :

あなたがしていることは、テーブルを複数回結合することです。 投稿のクエリを見てください。レビューテーブル(rvwとしてエイリアス)から値を選択し、そのテーブルはドメインテーブルへの2つのリファレンス(FORとFROM)を提供します。

この時点で、DomainテーブルをReviewsテーブルに左結合することは簡単なことです。FORに一度(toDと呼ばれる)、FROMに二度(fromDと呼ばれる)です。

次にSELECTリストで、DOMAINテーブルの両方のLEFT JOINSからDOM_URLフィールドを選択し、Domainsテーブルを参照して結合したそれぞれのテーブルエイリアスで参照し、それらをToURLとFromUrlとしてエイリアスを設定します。

SQL におけるエイリアスの詳細については、以下を参照してください。 を参照してください。 .