php - 使用 1 个查询查询具有多个 GET 函数的多个表

标签 php mysql

我想在我的mysql数据库中查询6个独立的表,结构如下;

item

itemid |项目 |说明 |品牌 |日期 |时间 |路径 |

actor

Actor |姓名 | Actor 拇指 |简介 |

brand

品牌品牌|品牌名称 |说明 |图片 |

movie

电影电影|标题 |流派 |年份 |电影拇指 |内容提要|

user

用户名 |姓名 |姓 |电邮 |密码 |

request

请求编号 |用户名 |项目编号 |布兰迪 |电影编号 | Actor |内容 |请求日期 |

通过使用 get 命令单击指向名为 style.php 的页面的链接,我可以通过从连接的表中拉出它来查看请求和其中的信息。例如,在 requestid=1 的地方,我可以在请求中看到电影、电影中的 Actor 、他们穿的衣服及其品牌。通过使用以下 4 个查询;

Movie
$requestid = $_GET['requestid'];
$query = "SELECT * FROM movie, request WHERE movie.movieid = 
request.movieid and requestid = ".$requestid;

Actor
$requestid = $_GET['requestid'];
$query = "SELECT * FROM actor, request WHERE actor.actorid = 
request.actorid and requestid = ".$requestid;

Item
$requestid = $_GET['requestid'];
$query = "SELECT * FROM item, request WHERE item.itemid = 
request.itemid and requestid = ".$requestid;

Brand
$requestid = $_GET['requestid'];
$query = "SELECT * FROM brand, request WHERE brand.brandid = 
request.brandid and requestid = ".$requestid;

因此我想将上面的 4 个查询合并为 1 个查询,这样我就可以显示所有信息,包括查询用户和请求表以显示谁记录了请求,请指教?

最佳答案

SELECT * FROM request r
INNER JOIN  movie m ON m.movieid = r.requestid
INNER JOIN actor a ON a.actorid = r.requestid
INNER JOIN item i ON i.itemid = r.requestid
INNER JOIN brand b ON b.brand_id = r.requestid
WHERE r.requestid = {your request id}

当然,如果其中一个连接有可能失败(例如,一部没有品牌的电影),则改用左连接。

此外,您的所有主键都相等是不是有点奇怪?如果确实如此,您可以从不从请求表中进行选择而逃脱:

SELECT * FROM movie m
INNER JOIN actor a ON a.actorid = m.movieid
INNER JOIN item i ON i.itemid = m.movieid
INNER JOIN brand b ON b.brand_id = m.movieid
WHERE m.movieid = {your request id}

关于php - 使用 1 个查询查询具有多个 GET 函数的多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7070116/

相关文章:

javascript - PHP/Javascript - 从巨大的日志文件中实时读取添加的行

php - 将 ereg_replace 转换为 preg_replace

php - 用 PHP 解释 SQL

php - 等待直到从站同步

php - 使用 MySQL 数据库填充 php 数组

php - 如何检查 Smarty 中是否存在变量?

php - 对于软件开发人员来说,什么是好的 Web 框架和/或工具?

MySQL查询在完整数据库中搜索记录

mysql - 如何防止 MySQL 数据库中出现重复的列行,同时保持顺序不变

mysql - 如何在查询中对计算列进行 GROUP BY?