复杂的mysql查询,特定的连接
我有个问题。 我有3个表,选择时需要它们之间的内部联接。通常是这样的复杂的mysql查询,特定的连接,mysql,Mysql,我有个问题。 我有3个表,选择时需要它们之间的内部联接。通常是这样的 select `wp_fs_reports`.*,`wp_fs_agents`.`name`,`wp_rg_form`.`title` from `wp_fs_reports` INNER JOIN `wp_rg_form` ON (`wp_fs_reports`.`form_id` = `wp_rg_form`.`id`) INNER JOIN `wp_fs_agents` ON(`wp_fs_reports`.`age
select `wp_fs_reports`.*,`wp_fs_agents`.`name`,`wp_rg_form`.`title` from `wp_fs_reports`
INNER JOIN `wp_rg_form` ON (`wp_fs_reports`.`form_id` = `wp_rg_form`.`id`)
INNER JOIN `wp_fs_agents` ON(`wp_fs_reports`.`agent_id` = `wp_fs_agents`.`id`)
IF(`agent_id` = '0', 'All', `wp_fs_agents`.`name`) as `name
问题是,wp\u fs\u报告。代理id
和wp\u fs\u报告。表单id
可以有值('0'),该值在wp\u rg\u表单.id
和wp\u fs\u代理.id
中不存在。因此,它将只输出存在的值。问题是,是否可以输出上述值为0的行,将这些行中的wp\u fs\u agent.name
和wp\u rgu form.title
替换为“All”;
我想,换掉它会像
select `wp_fs_reports`.*,`wp_fs_agents`.`name`,`wp_rg_form`.`title` from `wp_fs_reports`
INNER JOIN `wp_rg_form` ON (`wp_fs_reports`.`form_id` = `wp_rg_form`.`id`)
INNER JOIN `wp_fs_agents` ON(`wp_fs_reports`.`agent_id` = `wp_fs_agents`.`id`)
IF(`agent_id` = '0', 'All', `wp_fs_agents`.`name`) as `name
您可以使用左连接和合并功能:
SELECT
`wp_fs_reports`.*,
COALESCE(`wp_fs_agents`.`name`,'All'),
`wp_rg_form`.`title`
FROM
`wp_fs_reports`
LEFT JOIN `wp_rg_form` ON (`wp_fs_reports`.`form_id` = `wp_rg_form`.`id`)
LEFT JOIN `wp_fs_agents` ON(`wp_fs_reports`.`agent_id` = `wp_fs_agents`.`id`)
您可以左键连接到
wp\u fs\u代理
表,该表将包括wp\u fs\u报告
行,这些行在wp\u fs\u代理
中没有代理id
:
select
wp_fs_reports.*,
IF(wp_fs_reports.agent_id = '0', 'All', wp_fs_agents.name) as name,
wp_rg_form.title
from wp_fs_reports
INNER JOIN wp_rg_form ON wp_fs_reports.form_id = wp_rg_form.id
LEFT JOIN wp_fs_agents ON wp_fs_reports.agent_id = wp_fs_agents.id
如果
wp\u fs\u agents
表中没有表示除零以外的agent\u id
值,那么它们也会出现在结果中,因此您需要其他方法来排除它们。谢谢,这是可行的,只是应该有点不同。如果(wp\u fs\u reports.form\u id='0','All',wp\u rg\u form.title)作为标题,而不是wp\u rg\u form.title
。而不是内在的,它应该被留下。还有,你忘了(在之后)。