请在下面找到我设置的表结构和我正在运行的查询的链接。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