我有一個問題,我只需要從我的初始表中獲取一些東西,然後從另一個表中加入另一個項目,然後再從另一個表中加入另一個項目。我認爲這很容易,但它遠非如此。這裏是我的SQL信息(爲了簡單起見,它保存爲一條記錄)。多表加入
select * from customers limit 1 \G;
*************************** 1. row ***************************
CustomerID: 9
CustomerMapsco: 459
CustomerActive: 1
CustomerFirstName: John
CustomerLastName: Doe
CustomerServiceStreet: 1314 Road Rd.
CustomerServiceCity: City
CustomerServiceState: TX
CustomerServiceZip: 12345
CustomerBillingStreet: 1314 Road Rd.
CustomerBillingCity: City
CustomerBillingState: TX
CustomerBillingZip: 12345
CustomerHomePhone: 1231231234
CustomerCellPhone: 1231231234
CustomerWorkPhone: 1231231234
CustomerWorkExt: 12345
CustomerFax: 1231231324
CustomerEmail: [email protected]
CustomerDog: 0
CrewID: 1
ScheduleID: 1
protected: 1
mysql> select * from customerservice limit 1 \G;
*************************** 1. row ***************************
CustomerSvcID: 15
CustomerID: 9
ServiceTypeID: 1
FrequencyTypeID: 1
DayID: 5
CustomerSvcCost: 21
CustomerSvcBeginDate: 2007-01-01 00:00:00
CustomerSvcEndDate: NULL
1 row in set (0.00 sec)
mysql> select * from frequency
-> ;
+-----------------+---------------+
| FrequencyTypeID | FrequencyType |
+-----------------+---------------+
| 1 | Weekly |
| 2 | Biweekly |
| 3 | One Time |
+-----------------+---------------+
我需要的是以下幾列:
customers.CustomerID, customers.CustomerActive, customers.protected, frequency.FrequencyType
我想我必須做三加入擺脫向客服表FrequencyType,因爲他們僅在該表中引用,而比客戶表。因此,我必須採取一個額外的步驟來獲取這些信息(customers <> customerservice <> frequency
)。
真棒,解決它。有什麼方法可以解釋這個以供將來參考?我猜'FROM tablename'後的字符是別名('AS'?)。我不明白的是你引用了它們,就像它們已經在'SELECT'部分中定義的一樣。所以,我猜MySQL(也許是其他的)允許你在定義它們之前引用別名,然後只要你定義它們,那麼它們都很好?只是一些基本的MySQL問題。再次,您的解決方案效果很好。 – drewrockshard
是的,表格t或表格t是一樣的。實際上我不知道mysql如何解析查詢,但肯定它會在解釋器選擇語句之前查找(以及SQL Server的工作方式)別名definiton,否則不起作用。我相信別人可以更好地解釋我 – Dalen