[英]Join tables - MySQL & PHP
我正在嘗試加入兩個表。 第一個表包含11個項目的列表,這些項目是帶有自動id字段“ id”的“ site_names”。 我要連接的第二個表的自動ID字段為“ desc_id”,另一個字段為“ descriptions”。 第二個表當前有3行數據,我只想為表1中的ID 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
這應該給你想要的東西。
好的-根據評論,我猜您想要的是:
site1 | desc1 | desc2 | desc3
全部在一排。 這有點棘手-特別是如果您希望它對任意數量的描述保持開放。 僅需要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表中添加外鍵。 如果我正確理解了您的問題,則您的表應如下所示:
Site
- SiteID
- DescriptionID
- SiteName
Description
- DescriptionID
- Description
然后,用於獲取站點及其相關描述的查詢將如下所示:
SELECT
s.SiteName,
d.Description
FROM
Site s INNER JOIN Description d
ON s.DescriptionID = d.DescriptionID
該表結構假定多個站點共享單個描述(根據您發布的問題)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.