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

时间:2008-10-14 03:41:24

标签: mysql

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

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

简单。

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

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

3 个答案:

答案 0 :(得分:158)

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

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。 / p>

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

答案 1 :(得分:8)

鉴于以下表格..

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

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

答案 2 :(得分:-1)

阅读本文并尝试,这将对您有所帮助:

表1

column11,column12,column13,column14

表2

column21,column22,column23,column24


SELECT table1.column11,table1.column12,table2asnew1.column21,table2asnew2.column21 
FROM table1 INNER JOIN table2 AS table2asnew1 ON table1.column11=table2asnew1.column21  INNER TABLE table2 as table2asnew2 ON table1.column12=table2asnew2.column22

table2asnew1是表2的实例,由table1.column11=table2asnew1.column21

匹配

table2asnew2是表2的另一个实例,它与table1.column12=table2asnew2.column22

匹配