联接表-MySQL&;PHP

联接表-MySQL&;PHP,php,mysql,join,Php,Mysql,Join,我想把两张桌子连接起来。第一个表有11个项目的列表,这些项目是“站点名称”,自动id字段为“id”。我要连接的第二个表有一个自动id字段'desc_id',另一个字段'descriptions'。第二个表当前有3行数据,我只想为表1中的id 1显示这些数据 所以,我想完成的是将表1中id为“1”的第一个站点连接到整个第二个表 我似乎不知道如何只将表1中的第一个条目(id=1)连接到表2中的所有行(tb.1->id->1到tbl.2->desc_id->1,2,3) 我希望这是有道理的。任何帮助都

我想把两张桌子连接起来。第一个表有11个项目的列表,这些项目是“站点名称”,自动id字段为“id”。我要连接的第二个表有一个自动id字段'desc_id',另一个字段'descriptions'。第二个表当前有3行数据,我只想为表1中的id 1显示这些数据

所以,我想完成的是将表1中id为“1”的第一个站点连接到整个第二个表

我似乎不知道如何只将表1中的第一个条目(id=1)连接到表2中的所有行(tb.1->id->1到tbl.2->desc_id->1,2,3)

我希望这是有道理的。任何帮助都会很好。谢谢

试试:

select site_name, descriptions
from table_1
inner join table_2
  on 1 = 1
where table_1.site_id = 1
这会给你你想要的

好的-根据评论,我猜你想要的是:

地点1 |说明1 |说明2 |说明3

都在一排。这有点棘手——特别是如果你想让它对任意数量的描述保持开放的话。对于3(或者,实际上,任何有限的子集,但随着数字的增加,它变得丑陋),您可以:

select site_name, t2.desc, t3.desc, t4.desc
from table_1 
inner join table_2 t2
  on t2.desc_id = 1
inner join table_2 t3
  on t3.desc_id = 2
inner join table_2 t4
  on t4.desc_id = 3
where site_id = 1
但是这种东西是非常不规则的。在我看来,您的模式可能不太适合生成此类需求。

以下是查询:

<?php

        $mysql = new mysqli('localhost', 'root', 'root') or die('counld not connect');
        $result = $mysql->query("SELECT ajax_demo.explore.site_name, anthony1.property.descriptions FROM ajax_demo.explore INNER JOIN anthony1.property ON ajax_demo.explore.id = anthony1.property.desc_id") or die($mysql->error);

        if($result) 
        {
                                        while($row = $result->fetch_object()) 
                                        {
                                                $id = $row->id;
                                                $siteName = $row->site_name;
                                                $siteDescription = $row->site_description;


                                                echo "$siteName";
                                                echo "$siteDescription";
                                        }
        }

    ?>

我可能遗漏了一些内容,但我觉得您需要向站点表添加外键。如果我正确理解您的问题,您的表格应该如下所示:

Site
- SiteID
- DescriptionID
- SiteName

Description
- DescriptionID
- Description
SELECT
  s.SiteName,
  d.Description
FROM
  Site s INNER JOIN Description d
    ON s.DescriptionID = d.DescriptionID
然后,用于获取站点及其关联描述的查询如下所示:

Site
- SiteID
- DescriptionID
- SiteName

Description
- DescriptionID
- Description
SELECT
  s.SiteName,
  d.Description
FROM
  Site s INNER JOIN Description d
    ON s.DescriptionID = d.DescriptionID

此表结构假设多个站点共享一个描述(根据您发布的问题)。

如果您将(不工作)查询粘贴到此处,其他人将更容易看到您的错误方向是的,查看完整的表结构将有所帮助。同意。。。当前第二个表似乎没有引用第一个表的外键。。。因此,无法确定要获取哪些字段,您还可以调整位置以包含三个desc_id:where table_1.site_id=1和table_2.desc_id IN(1,2,3)@Harper,这个脚本几乎可以工作,问题是它在表2中的每一行之前显示站点名称3次您是否尝试过向查询中添加GROUP BY然后。。。may Help我尝试了“按站点名称、描述分组”和“按id分组,描述id”,但均无效。这似乎无法正常工作。什么是s。D对于它是一种缩写形式吗?