从多个表mysql php中检索数据

时间:2017-10-11 11:19:14

标签: php mysql

我有两张表MOVIES和SHOWS。

MOVIES 表包含:

id, name, image, description. 

SHOWS 表包含:

id, movieid, description.

我正在执行mysql语句从SHOWS表中检索记录,我正常获取所有记录。我再次执行另一个mysql语句,根据我从第一次查询得到的电影表id从MOVIES表中获取图像。 有没有简单的方法从SHOWS表中检索所有记录以及电影图像?

这些是我的疑问:

$qry1 = mysql_query("SELECT * FROM shows WHERE id='1'"); 
$res = mysql_fetch_array($qry1); 
$movieid = $res['movieid']; 
$qry2 = mysql_query("SELECT image FROM movies WHERE id='$movieid'"); 

3 个答案:

答案 0 :(得分:1)

SELECT  t1.id, t1.movieid, t1.description, t2.image FROM SHOWS as t1
INNER JOIN 
MOVIES as t2 ON t1.id = t2.id 

一些sql join docs

或者你可以尝试这个,我不确定女巫是从哪里来的:

SELECT id, movieid, description, image FROM SHOWS 
INNER JOIN MOVIES
ON id = movieid

一些外键docs

答案 1 :(得分:0)

这里我写的是加入你可以使用嵌套的选择查询

select movies.image from movies where movies.id in(Select shows.movieid form shows where shows.id= 1);

答案 2 :(得分:0)

您可以同时从一个服务器检索多个表中的数据。有很多方法可以实现这个名为join的操作。其中一种可能性是LEFT JOIN这样:

SELECT t1.field1, t1.field2,..., t2.field1, t2.field2, ..., t2.fieldn
FROM table1 AS t2 
LEFT JOIN talble2 AS t2 ON t2.some_field = t1.anothed_filed
WHERE some_condition

在你的情况下:

SELECT s.*, m.image
FROM SHOWS AS s
LEFT JOIN movies AS m ON s.movieid = m.id
WHERE some_condition

有关详情,请参阅https://dev.mysql.com/doc/refman/5.7/en/join.html

上的文档