Php 根据第一个表中的列值,使用条件连接多个表
嗨,我有八个表,我必须从这些表中获取数据。表结构如下所示:Php 根据第一个表中的列值,使用条件连接多个表,php,mysql,sql,join,codeigniter-3,Php,Mysql,Sql,Join,Codeigniter 3,嗨,我有八个表,我必须从这些表中获取数据。表结构如下所示: event_info id | event_id | event_types | animal_type human_victim_info id | event_id | victim_full_name | address livestock_destruction_info id | event_id | owner_name | owner_address crop_destruction_info id | event_
event_info
id | event_id | event_types | animal_type
human_victim_info
id | event_id | victim_full_name | address
livestock_destruction_info
id | event_id | owner_name | owner_address
crop_destruction_info
id | event_id | crop_land_type
proprty_destruction_info
id | event_id | property_type | cost
other_destruction_info
id | event_id | description
additional_info
id | event_id | images | feedback
wild_animal_info
id | event_id | number | location_from | location_to
我使用join作为:
SELECT e.*
, wa.*
, hv.*
, lv.*
, c.*
, p.*
, o.*
, a.*
, e.id as eId
, e.event_id as eventId
FROM event_info e
LEFT
JOIN wild_animal_info wa
ON wa.event_id = e.event_id
LEFT
JOIN human_victim_info hv
ON hv.event_id = e.event_id
AND e.event_types LIKE '%1%'
LEFT
JOIN livestock_destruction_info lv
ON lv.event_id = e.event_id
AND e.event_types LIKE '%2%'
LEFT
JOIN crop_destruction_info c
ON c.event_id = e.event_id
AND e.event_types LIKE '%3%'
LEFT
JOIN proprty_destruction_info p
ON p.event_id = e.event_id
AND e.event_types LIKE '%4%'
LEFT
JOIN other_destruction_info o
ON o.event_id = e.event_id
AND e.event_types LIKE '%5%'
LEFT
JOIN additional_info a
ON a.event_id = e.event_id
WHERE e.event_id LIKE '%0026-%';
其中,仅当事件信息表中的事件类型包含1时,我才想加入人类受害者信息表,类似地,仅当事件信息表中的事件类型包含2时,我才想加入牲畜销毁信息表,类似地,仅当事件信息表中的事件类型包含3时,我才想加入作物销毁信息表,依此类推,直至其他销毁信息。但我必须始终加入野生动物信息和附加信息表。我在每张桌子上都有事件id。我怎样才能做到这一点?问题源于糟糕的设计。如果您正在查询一个表,例如“%3%”等,那么在某个地方出现了很大的问题。哦..我如何修改表设计以轻松获得所需的输出?通过使用一个单独的事件类型表,以规范化的方式存储事件和类型。IMHO这最好留给一些PHP代码,不需要连接所有这些表,只需获取事件,然后按照事件类型的指示获取相应的子表。@NigelRen如果需要从所有8个选项卡中获取O(n^8)的数据,则该子表的伸缩性将更小