我有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列中回显出第二个域名呢?
你会使用另一个连接,这些都是这样的:
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中别名的更多信息,请阅读此处.
鉴于以下表格..
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
如果你仍然卡住了,请更具体,确切地说是你不明白.