2012-05-16 41 views
2

使用PHP/MySQL的我試圖從行獲得的數據將比賽拖入定義的列

我有兩個表一個customers另一個cust_data

有一個匹配兩個是ListID

現在cust_data表內的數據被列爲cust_data

列:

ListID DataName DataValue 
1  type  something 
1  Region something 

客戶 列:

ListID Name Address City State Zip Phone 

我想要得到的結果

Name Address City State Zip Phone Type Region 
+2

瞭解[SQL連接(HTTP:// WWW .codinghorror.com /博客/ 2007/10/A-視覺解釋-的-SQL joins.html)。 – eggyal

+0

我很熟悉我將加入ListID列的join命令,但我不知道如何確保類型位於類型下,並且該區域將位於區域下方,因爲數據位於行而不是列。 – Steven

回答

1
SELECT customers.*, data_type.DataValue AS Type, data_region.DataValue AS Region 
FROM customers 
    JOIN cust_data AS data_type ON (
     data_type.ListID = customers.List_ID 
    AND data_type.DataName = 'Type' 
) 
    JOIN cust_data AS data_region ON (
     data_region.ListID = customers.List_ID 
    AND data_region.DataName = 'Region' 
) 
+0

您的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第4行的JOIN qb_dataext AS data_type ON(qb_customer.ListID = qb_dataext.Entity)附近使用正確的語法 – Steven

+0

@Steven:'JOIN qb_dataext'不在我上面的答案中.. – eggyal

+0

我修正了有一個,當不應該有現在我有一個新問題 – Steven

0

可以使用一組查詢做到這一點。你可以按ListID的事實得到單行使這個相對straightforward--只需選擇有條件和別名DataValue場需要:

SELECT c.Name, c.Address, c.City, c.State, c.Zip, c.Phone, 
    MAX (CASE WHEN d.DataName = 'type' THEN DataValue ELSE NULL END) AS `Type`, 
    MAX (CASE WHEN d.DataName = 'Region' THEN DataValue ELSE NULL END) AS `Region` 
FROM customers c, cust_data d 
WHERE c.ListID = d.ListID 
GROUP BY c.ListID, c.Name, c.Address, c.City, c.State, c.Zip, c.Phone 
+1

'[]'標識符引號在MySQL中無效。改爲使用反引號。 – eggyal

+0

@eggyal謝謝,更新。 – McGarnagle

+0

當它使用組時只會得到類型的結果它不會得到區域的結果。 – Steven

相關問題