当前位置:  开发笔记 > 后端 > 正文

你如何在mysql中加入同一个表,两次?

如何解决《你如何在mysql中加入同一个表,两次?》经验,为你挑选了2个好方法。

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

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

简单.

现在我需要在网页上实际显示两个域名.我知道如何通过LEFT JOIN域ON review.rev_dom_for = domains.dom_url查询显示其中一个,然后你回显出dom_url,它将回显rev_dom_for列中的域名.

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



1> Stephen Wrig..:

你会使用另一个连接,这些都是这样的:

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

编辑:

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

此时,将Domain表连接到Reviews表是一件简单的事情.一次(别名为D)表示FOR,第二次(别名为D)表示FROM.

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

有关SQL中别名的更多信息,请阅读此处.


诀窍在于,您已使用名称"AS to"和"AS from"识别每个JOIN,以便您可以在SELECT中使用它们.

2> delux247..:

鉴于以下表格..

Domain Table
dom_id | dom_url

Review Table
rev_id | rev_dom_from | rev_dom_for

试试这个sql ...(这与Stephen 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

如果你仍然卡住了,请更具体,确切地说是你不明白.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有