請在下面找到我設置的表結構和我正在運行的查詢的鏈接。SQL查詢從3-4個表中進行選擇
本結果是,只有firstnames,lastnames和 「education_finished」 被示出。但是所有的option_id和它們相關的lang_values仍然顯示「NULL」。
期望的結果:
任何建議如何解決?
請在下面找到我設置的表結構和我正在運行的查詢的鏈接。SQL查詢從3-4個表中進行選擇
本結果是,只有firstnames,lastnames和 「education_finished」 被示出。但是所有的option_id和它們相關的lang_values仍然顯示「NULL」。
期望的結果:
任何建議如何解決?
下面是你正在使用的查詢:
SELECT d.pf_firstname, d.pf_lastname, f.field_id, fl.option_id,
d.pf_education_finished, fl.lang_value
FROM phpbb_profile_fields_data d
LEFT JOIN phpbb_profile_fields f
ON d.pf_education_finished = f.field_name
LEFT JOIN phpbb_profile_fields_lang fl
ON f.field_id = fl.field_id
ORDER BY d.pf_lastname ASC
爲什麼你越來越null
值的原因是因爲這種情況:
LEFT JOIN phpbb_profile_fields f
ON d.pf_education_finished = f.field_name
您試圖join
上pf_education_finished(int
)一個表的字段和另一個表的field_name(int
)字段。此外,沒有匹配的值(例如pf_education_finished
包含數字,而field_name
是「完成教育」)。
如果您想查詢,以便對field_id
和phpbb_profile_fields
需要返回的東西,那麼你需要join
有一些記錄匹配字段ID,例如:
SELECT d.pf_firstname, d.pf_lastname, f.field_id, fl.option_id,
d.pf_education_finished, fl.lang_value
FROM phpbb_profile_fields_data d
LEFT JOIN phpbb_profile_fields f
ON d.pf_education_finished = f.field_id
LEFT JOIN phpbb_profile_fields_lang fl
ON f.field_id = fl.field_id
ORDER BY d.pf_lastname ASC
下面是更新SQL Fiddle。
SELECT d.pf_firstname, d.pf_lastname, f.field_id, fl.option_id,
d.pf_education_finished, fl.lang_value
FROM phpbb_profile_fields_lang fl
inner JOIN phpbb_profile_fields f
ON f.field_id = fl.field_id
inner JOIN phpbb_profile_fields_data d
ON f.field_id = fl.field_id
ORDER BY d.pf_lastname ASC
這是可選的查詢,如果你想從3-4表,但在此查詢名稱重複按了count of field_id
目前在phpbb_profile_fields_lang
顯示數據。
您正在尋找的確切解決方案是,當您從中檢索數據的所有表中具有相同的主鍵時。
謝謝。
你能展示預期的結果嗎? – Jens
'phpbb_profile_fields_data'和'phpbb_profile_fields_data'之間沒有任何相關的字段 – McNets
ON d.pf_education_finished = f.field_name' – McNets