Php Mysql将两个表连接在一起

Php Mysql将两个表连接在一起,php,mysql,foreach,inner-join,Php,Mysql,Foreach,Inner Join,让我们从头开始 我有三张桌子: 表格应用程序: apps id name status ----------------------------- 表菜单\u小节: menu_subsection id app_id subsection ----------------------------- 表格位置: site id site_name app1 app2 app3 app4 app5 app6 app7 app8 app9 app10 ... ap

让我们从头开始

我有三张桌子:

表格应用程序:

apps
id     name      status
-----------------------------
表菜单\u小节:

menu_subsection
id     app_id    subsection
-----------------------------
表格位置:

site
id  site_name app1 app2 app3 app4 app5 app6 app7 app8 app9 app10 ... app19 app20
---------------------------------------------------------------------------------
表站点包含从app1到app20的列

为了更好地解释
站点。app1-20
等于
apps.id
,也等于
apps.name
等于
menu\u小节

现在我想为每个
表显示
  • 菜单\u小节。$subsection
  • 。site app1-20
    列等于1,其中

    apps.status = 1
    
    首先,我是mysql新手,我非常感谢你们的建议,如果你们认为修改表更好的话,我会尽我所能让它以最好的方式工作


    我还想减少app1-20列,并用将值分散到coma的应用程序取代它。

    您的站点表效率不高。有着巨大的能量场!您最好使用3个更有效的字段,并提供一个很好的解决方案,以便于查询! 我还认为
    应用程序
    菜单
    表在语义上是相等的(具有相同的字段和相同的域) 因此,您可以得到两个表,如:

    应用程序:

    地点:

    然后可以通过以下两个表进行查询:

    SELECT subsection FROM apps INNER JOIN site WHERE status = 1
    

    隐马尔可夫模型。。。我以前没有注意到我可以合并这两个表。好吧,假设站点表中的1条记录能够查看应用表中的2条应用,这两条应用将由应用中的coma而不是appłid列分隔,这是正确的想法吗?@PawełGawroński我不这么认为。你知道当你想加入两个表时,你有两个域是相同的。因此,如果你使用coma,你不能加入这两个表。那么我如何才能让这些网站有可能访问多个应用程序?在站点表中添加具有相同站点名称和不同应用程序id的记录?@PawełGawroński Yes。在这样的表中,主键是(site_name和app_id)组合,甚至是site表中的id字段。这比昏迷解决方案(坏模式)要好,因为昏迷解决方案是一个死锁,或者需要更多不必要的计算,所以我现在按照建议重新构建了表,是的,它正在工作:)比我的第一个解决方案简单得多。谢谢@Pokies
    site
    id      site_name      app_id
    ------------------------------
    
    SELECT subsection FROM apps INNER JOIN site WHERE status = 1