gpt4 book ai didi

mysql - SQL 查询不返回预期值

转载 作者:行者123 更新时间:2023-11-29 13:14:57 25 4
gpt4 key购买 nike

我正在为我的客户开发一个数据库,在其中一个页面(用 PHP 和 HTML 编写)上,我需要显示其客户的所有信息,但是当我运行以下查询时(应该选择表“families”中的所有行)总共返回 0 行。何时应返回表中的所有行

SELECT
families.id AS fam_id,
families.last_name AS fam_surname,
families.address_1 AS fam_address_1,
families.address_2 AS fam_address_2,
families.city_id AS fam_city,
families.phone AS fam_phone,
families.mobile AS fam_mobile,
families.email AS fam_email,
families.f_d_worker_1 AS fam_fdw_1,
families.f_d_worker_2 AS fam_fdw_2,
families.status_id AS fam_status_id,
families.trans_date AS fam_trans_date,
families.entry_date AS fam_entry_date,
families.exit_date AS fam_exit_date,
families.eligible_date AS fam_eligible_date,
families.active_date AS fam_active_date,
families.lga_loc_id AS fam_lga_id,
families.facs_loc_id AS fam_facs_id,
families.ind_status_id AS fam_indig_id,
families.referral_id AS fam_ref_id,
families.active_status AS fam_act_status,
families.comm_org_id AS fam_com_org,
city.id AS city_id,
city.name AS city_name,
city.state_id AS city_state,
city.post_code AS post_code,
states.id AS state_id,
states.long_name AS state_name,
states.abbrev AS state_abbrev,
client_status.id AS client_stat_id,
client_status.name AS client_stat_name,
community_org.id AS com_org_id,
community_org.name AS com_org_name,
facs_location.id AS facs_id,
facs_location.name AS facs_name,
lga_location.id AS lga_id,
lga_location.name as lga_name,
indig_status.id AS indig_id,
indig_status.name AS indig_name,
referrals.id AS ref_id,
referrals.name AS ref_name,
f_d_workers.id AS fdw_id,
f_d_workers.first_name AS fdw_first_name,
f_d_workers.last_name AS fdw_last_name,
client_status.id AS client_id,
client_status.name AS client_name
FROM
`families`,
`city`,
`client_status`,
`community_org`,
`facs_location`,
`f_d_workers`,
`indig_status`,
`lga_location`,
`referrals`,
`states`
WHERE
families.city_id = city.id AND
families.f_d_worker_1 = f_d_workers.id AND
families.f_d_worker_2 = f_d_workers.id AND
families.status_id = client_status.id AND
families.lga_loc_id = lga_location.id AND
families.facs_loc_id = facs_location.id AND
families.ind_status_id = indig_status.id AND
families.referral_id = referrals.id AND
families.comm_org_id = community_org.id

最佳答案

如果没有看到您的架构或数据,我会猜测您的查询中的一个或多个联接没有按照您认为的方式工作。例如,该查询意味着每个家庭记录的 city_id、f_d_worker_1、f_d_worker_2、status_id、lga_loc_id、facs_loc_id、ind_status_id、referral_id 和 comm_org_id 都将具有非空值。如果家庭记录中每个字段都有值,则在一个或多个相应表(city、f_d_workers、client_status、lga_locations、facs_locations、indig_status、referrals、community_org)中似乎没有匹配的 id 字段。

当复杂查询无法按照我认为应该的方式工作时,我通常使用的第一步是将内部联接转换为外部联接,然后简单地查找丢失的记录。

另一方面,如果一个或多个连接元素是可选的(即可能没有 f_d_worker_2 id),那么您应该在查询本身中使用外连接。我希望这会有所帮助。

已更新

SELECT
families.id AS fam_id,
families.last_name AS fam_surname,
families.address_1 AS fam_address_1,
families.address_2 AS fam_address_2,
families.city_id AS fam_city,
families.phone AS fam_phone,
families.mobile AS fam_mobile,
families.email AS fam_email,
families.f_d_worker_1 AS fam_fdw_1,
families.f_d_worker_2 AS fam_fdw_2,
families.status_id AS fam_status_id,
families.trans_date AS fam_trans_date,
families.entry_date AS fam_entry_date,
families.exit_date AS fam_exit_date,
families.eligible_date AS fam_eligible_date,
families.active_date AS fam_active_date,
families.lga_loc_id AS fam_lga_id,
families.facs_loc_id AS fam_facs_id,
families.ind_status_id AS fam_indig_id,
families.referral_id AS fam_ref_id,
families.active_status AS fam_act_status,
families.comm_org_id AS fam_com_org,
city.id AS city_id,
city.name AS city_name,
city.state_id AS city_state,
city.post_code AS post_code,
states.id AS state_id,
states.long_name AS state_name,
states.abbrev AS state_abbrev,
client_status.id AS client_stat_id,
client_status.name AS client_stat_name,
community_org.id AS com_org_id,
community_org.name AS com_org_name,
facs_location.id AS facs_id,
facs_location.name AS facs_name,
lga_location.id AS lga_id,
lga_location.name as lga_name,
indig_status.id AS indig_id,
indig_status.name AS indig_name,
referrals.id AS ref_id,
referrals.name AS ref_name,
workers1.id AS fdw1_id,
workers1.first_name AS fdw1_first_name,
workers1.last_name AS fdw1_last_name,
workers2.id AS fdw2_id,
workers2.first_name AS fdw2_first_name,
workers2.last_name AS fdw2_last_name,
client_status.id AS client_id,
client_status.name AS client_name
FROM
`families`
LEFT OUTER JOIN `city` ON families.city_id = city.id
LEFT OUTER JOIN `client_status` ON families.status_id = client_status.id
LEFT OUTER JOIN `community_org` ON families.comm_org_id = community_org.id
LEFT OUTER JOIN `facs_location` ON families.facs_loc_id = facs_location.id
LEFT OUTER JOIN `f_d_workers` AS workers1 ON families.f_d_worker_1 = workers1.id
LEFT OUTER JOIN `f_d_workers` AS workers2 ON families.f_d_worker_2 = workers2.id
LEFT OUTER JOIN `indig_status` ON families.ind_status_id = indig_status.id
LEFT OUTER JOIN `lga_location` ON families.lga_loc_id = lga_location.id
LEFT OUTER JOIN `referrals` ON families.referral_id = referrals.id
LEFT OUTER JOIN `states` ON city.state_id = states.id

我认为这就是您想要达到的目的。

关于mysql - SQL 查询不返回预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com