2014-09-12 92 views
0

嗨,大家好我是來自兩個表嘗試選擇字段,並顯示兩次基於條件的領域之一,basicly我需要:SQL - 來自具有兩個相同字段變體的多個表的信息。

wp_cimy_uef_data.VALUE WHERE wp_cimy_uef_data.FIELD_ID = 3 
wp_cimy_uef_data.VALUE WHERE wp_cimy_uef_data.FIELD_ID = 4 
wp_users.user_email 

我知道我要加入表的,我覺得我已經做了這一權利,但我不知道如何兩次根據WHERE選擇值字段,因此到目前爲止,我有:

SELECT wp_cimy_uef_data.VALUE, wp_users.user_email, FROM wp_users JOIN wp_cimy_uef_data ON wp_users.ID = wp_cimy_uef_data.USER_ID 

我但也許這會是這樣的

SELECT (wp_cimy_uef_data.VALUE WHERE wp_cimy_uef_data.FIELD_ID = 3), (wp_cimy_uef_data.VALUE WHERE wp_cimy_uef_data.FIELD_ID = 4) 

但顯然這是錯誤的。

回答

1

如果我理解正確的話,你可以做你想做的兩個東西聯接:

SELECT d3.VALUE, d4.value, u.user_email 
FROM wp_users u JOIN 
    wp_cimy_uef_data d3 
    ON u.ID = d3.USER_ID and d3.field_id = 3 JOIN 
    wp_cimy_uef_data d4 
    ON u.ID = d4.USER_ID and d4.field_id = 4; 

注意使用表別名來區分兩個版本的t他表。

+0

我認爲你在正確的軌道上,明白我想要做什麼....但它給了我一個錯誤。在這之前,我從來沒有使用過別名,我必須在某處定義它們,或者它是自動的嗎? – 2014-09-13 01:04:03

+0

@ShoutItWebSolutions。 。 。它是自動的。你得到什麼樣的錯誤? – 2014-09-13 01:07:04

+0

#1064 - 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到正確的語法,以便在'FROM wp_users u JOIN wp_cimy_uef_data d3 '附近使用ON u.ID = d3.USER_ID and d3.f'at line 2 may im im joining the tables incorrectly .. 。使用錯誤的鍵或什麼? – 2014-09-13 01:08:11

1

您可以使用case

SELECT 
case when d.FIELD_ID = 3 then d.VALUE end val1, 
case when d.FIELD_ID = 4 then d.VALUE end val2, 
u.user_email 
FROM wp_users u 
JOIN wp_cimy_uef_data d ON u.ID = d.USER_ID 

使用max挑非空值

SELECT 
max(case when d.FIELD_ID = 3 then d.VALUE end) val1, 
max(case when d.FIELD_ID = 4 then d.VALUE end) val2, 
u.user_email 
FROM wp_users u 
JOIN wp_cimy_uef_data d ON u.ID = d.USER_ID 
GROUP BY u.user_email /* or put group by u.ID*/ 
+0

@M_Khalid_Junaid工作,但現在它返回每個記錄的多個副本?我的加入有什麼問題嗎? – 2014-09-13 00:48:25

+0

@ShoutItWebSolutions看到我的第二個查詢 – 2014-09-14 20:12:58

相關問題