簡體   English   中英

SQL-來自具有相同字段的兩個變體的多個表的信息。

[英]SQL - Info from multiple tables with two variants of the same field.

大家好,我正在嘗試從兩個表中選擇字段,並根據條件顯示兩次該字段之一,基本上我需要:

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選擇兩次VALUE字段:

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)

但顯然那是錯誤的。

你可以用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選擇非null值

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*/

如果我理解正確,則可以通過兩個聯接來執行所需的操作:

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;

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM