从引用mysql中某些表的多个表中检索数据
我有10张桌子有innoDB引擎 1.一个是从引用mysql中某些表的多个表中检索数据,mysql,Mysql,我有10张桌子有innoDB引擎 1.一个是state\u表哪些属性是state\u id和state\u name 2.另一个表city\u表哪些属性是city\u id和city\u name 3.再多一个表permit\u table哪个属性是p\u id 上面的城市id、州id和许可证id是对其余7个表的引用 每个表格都有州id、城市id和许可证id,参考上述表格 现在,我想提取所有具有各自城市名称和州名称的表数据(每个表可能有不同的城市id和州id) 我正在使用下面的mysql查询(我
state\u表
哪些属性是state\u id
和state\u name
2.另一个表city\u表
哪些属性是city\u id
和city\u name
3.再多一个表permit\u table
哪个属性是p\u id
上面的城市id、州id和许可证id
是对其余7个表的引用
每个表格都有州id、城市id和许可证id,参考上述表格
现在,我想提取所有具有各自城市名称和州名称的表数据(每个表可能有不同的城市id和州id)
我正在使用下面的mysql查询(我知道它非常长……)。
请告诉我如何用优化的方法来做
SELECT p.*,cp.city_name,sp.state_name,
o.*,co.city_name,so.state_name,
t.*,ct.city_name,st.state_name,
............................
.......so on................
............................
FROM permit_table p
JOIN table_city cp ON cp.city_id=p.city_id
JOIN table_state sp ON sp.state_id=p.state_id
JOIN table_one o ON o.permit_id=p.permit_id
JOIN table_city co ON co.city_id=o.city_id
JOIN table_state so ON so.state_id=o.state_id
JOIN table_two t ON t.permit_id=p.permit_id
JOIN table_city ct ON ct.city_id=t.city_id
JOIN table_state st ON st.state_id=t.state_id
..............................................
................so on.........................
..............................................
WHERE p.permit_id=base64_encode(mysql_real_escape_string($_GET[pid]));
感谢大家一直以来对我的帮助。不要认为桌子必须相互连接。他们只需要加入集团。因此,与其多次添加“JOIN table_city”和“JOIN table_state”,只需确保前面的连接是正确的,并在必要时通过其他连接。例如,你可以说
在t.permit\u id=p.permit\u id和t.city\u id=p.city\u id和…
上连接表2如果表之间没有直接映射,我假设您必须有一个中间表来连接这两个表。如果不是的话,制作另一个表格可能会很有用,您可以在其中映射州和城市。根据所保存的信息,还可以在主键以外的其他对象上联接表。比如说,如果你把州名保存在城市表格中,你也可以在上面加入表格。@MJBtable\u permit
city\u id和table\u两个city\u id不同,那么我们如何使用t.city\u id=p.city\u id
我一定是看错了原始帖子。很抱歉,我以为你在重复加入同一个专栏。我的错。