tutorial - mysql连接




你如何在mysql中连接两次同一张表? (2)

我有两张桌子。 一个(域)具有域ID和域名(dom_id,dom_url)。

另一个包含实际数据,其中2个列需要TO和FROM域名。 所以我有两个列rev_dom_from和rev_dom_for,它们都存储域名表中的域名ID。

简单。

现在我需要在网页上实际显示两个域名。 我知道如何通过LEFT JOIN域进行reviews.rev_dom_for = domains.dom_url查询来显示其中一个或另一个,然后回显出dom_url,这会在rev_dom_for列中回显域名。

但是,我如何让它在dom_rev_from列中回显第二个域名呢?


你会使用另一个连接,沿着这些线:

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

编辑

你所做的只是多次加入表格。 查看帖子中的查询:它从评论表中选择值(别名为rvw),该表为您提供2个对域表(FOR和FROM)的引用。

在这一点上,将域表添加到评论表是一件简单的事情。 一次(用toD替代FOR),第二次(从D替换为FROM)。

然后在SELECT列表中,您将从DOMAIN表的两个LEFT JOINS中选择DOM_URL字段,并通过每个对Domains表的连接引用的表别名引用它们,并将它们别名为ToURL和FromUrl。

有关SQL中别名的更多信息,请阅读here


鉴于以下表格..

Domain Table
dom_id | dom_url

Review Table
rev_id | rev_dom_from | rev_dom_for

尝试这个SQL ...(这几乎是斯蒂芬Wrighton上面写的)同样的事情诀窍是,你基本上从域表中选择两次在同一个查询并加入结果。

Select d1.dom_url, d2.dom_id from
review r, domain d1, domain d2
where d1.dom_id = r.rev_dom_from
and d2.dom_id = r.rev_dom_for

如果你仍然陷入困境,请更确切地说明你确实不明白。





mysql