2011-08-07 60 views
1

我有一个表有两个不同的地址表引用。我想用视图中的实际列替换每个引用id。我想像接下来的事情,但这不起作用。我正在使用MySQL 5.5。什么是正确的语法?如何用另一个表中的多个列替换表中的一列

CREATE VIEW Company AS 
select id, Name AccountName, JoinDate, AccountStatus, CompanyName, 
(select street1 MailStreet1, street2 MailStreet2, city MailCity, state MailState, county MailCounty, country MailCountry, postalcode MailPostalCode from Addresses where id = MailAddress limit 1) , 
(select street1 BillingStreet1, street2 BillingStreet2, city BillingsCity, state BillingState, county BillingCounty, country BillingCountry, postalcode BillingPostalCode from Addresses where id = BillingAddress limit 1) 
from Customer; 

回答

2
select 
    c.id, c.Name as AccountName, c.JoinDate, c.AccountStatus, c.CompanyName, 
    ma.street1 as MailStreet1, ma.street2 as MailStreet2, ma.city as MailCity, ma state as MailState, 
    ma.county as MailCounty, ma.country as MailCountry, ma.postalcode MailPostalCode, 
    ba.street1 as MailStreet1, ba.street2 as MailStreet2, ba.city as MailCity, ba state as MailState, 
    ba.county as MailCounty, ba.country as MailCountry, ba.postalcode MailPostalCode, 
from 
    Customer c 
    inner join Address ma on ma.id = c.MailAddress 
    inner join Address ba on ba.id = c.BillingAddress 

您可以使用LEFT JOIN而不是INNER JOIN的,如果这些地址的引用可能为空。

+0

+1雅打我吧:) – Bohemian

+0

PS:由于可读性,我在字段和别名之间使用'as',但这当然不是必需的。 – GolezTrol

+0

谢谢!那样做了。 – Steve

相关问题