使用两个表PHP&;MySQL

使用两个表PHP&;MySQL,php,mysql,Php,Mysql,我正在制作一个显示商店列表的网页。我有两张表,shops和shops\u sched +-shops-+ | id | title | +-------------shops_sched-------------+ | id | shops_id | start_date | end_date | 基本上,程序显示shops表中的店铺列表,但是如果找到shops.id中的值@code>shops\u sched.shops\u id页面必须输出shops.title+“即将到来” 我知道,如

我正在制作一个显示商店列表的网页。我有两张表,
shops
shops\u sched

+-shops-+
| id | title |

+-------------shops_sched-------------+
| id | shops_id | start_date | end_date |
基本上,程序显示
shops
表中的店铺列表,但是如果找到
shops.id
中的值@code>shops\u sched.shops\u id页面必须输出
shops.title
+“即将到来”

我知道,如果我只是将日期字段放在表
shops
中,这将很容易,但由于编程限制,我不能。我正在处理一个现有的项目,我正在努力最小化对现有功能的更改。如果需要,我可以创建新的PHP函数


此外,我需要从shops表中获取所有条目。程序需要返回所有shops.title,但对于id为@shops\u sched.shops\u id的店铺,程序必须返回shops.title+“即将到来”。

加入两个表:

SELECT shops.title
FROM shops INNER JOIN shops_sched ON shops.id = shops_sched.shops_id
查询应仅返回shops\u sched中的店铺

编辑:

如果我理解你的问题,试试这个:

SELECT shops.title, shops_sched.id
FROM shops LEFT JOIN shops_sched ON shops.id = shops_sched.shops_id
这将返回所有标题,如果shops.id=shops\u sched.shops\u id,则shops\u sched.shops\u id将为空

然后获取行,如果第二行不为空,则打印title+,很快就会出现

示例代码:(类似于此)

必须输出shops.title+“即将到来”

这样做:

$shops.title = "Donut-John";
echo $shops.title." coming soon";

加入shops和shops_sched表

$query = SELECT `title` FROM `shops` JOIN `shops_sched` ON `shops`.`id` = `shops_sched`.`shops_id` WHERE `shops_sched`.`shop_id` = 5;

$result = mysql_query($query);

while($row = mysql_fetch_array($result) {
    echo $row['title'] . 'coming soon';
}
有关加入的更多信息,您还可以参考以下链接


此外,我需要从shops表中获取所有条目。该程序需要返回所有店铺。title但是对于那些id为@shops\u sched.shops\u id的店铺,该程序将必须返回shops.title+“马上就来”。很抱歉,我不确定我是否理解您的意思。。您需要商店中的所有表格,如果它们在商店附表中找到,您想返回title+coming soon?是的,我需要商店中的所有条目,如果它们的id在商店附表中找到,您将向所有受影响的条目附加“coming soon”。例如,我有3个条目来自商店表-1-麦当劳,2-肯德基和3-汉堡王。和@shops\u sched table I在shop\u id字段中有值1和2。该程序将不得不返回——麦当劳(即将推出)、肯德基(即将推出)、Buger King搜索
左侧外部加入
,您将获得大量信息。我不能使用内部加入,因为它将只返回在shops_sched.shop_id中找到id的行。我需要获取所有行,无论其id是否在shops_sched表中找到。内部联接和左侧外部联接之间的区别恰恰是后者返回第一个表的所有行。
$query = SELECT `title` FROM `shops` JOIN `shops_sched` ON `shops`.`id` = `shops_sched`.`shops_id` WHERE `shops_sched`.`shop_id` = 5;

$result = mysql_query($query);

while($row = mysql_fetch_array($result) {
    echo $row['title'] . 'coming soon';
}