好的,我有两个信息表:电影&历史。我的电影数据库包含有关电影的所有信息。这些是电影中的行:id,标题,照片,目的地,描述,评级,长度,喜欢。
我的历史记录数据库包含有关用户点击的电影的所有信息。这些是历史记录中的行:id,user_id,movie_id。
问题
我正致力于一项名为"我的历史的功能。"如何显示他们的历史记录,还可以在一个SQL查询中从电影中获取信息?
例如:
$db->query("SELECT * FROM movies ORDER BY TABLE history WHERE user_id='$id'");
如果答案看似简单,我道歉。这是我第一年使用编程。感谢您的帮助。
答案 0 :(得分:2)
您的查询将是:
SELECT * FROM movies m
INNER JOIN history h ON h.movie_id = m.id
WHERE h.user_id = $id
ORDER BY h.id --not sure what you want to order by, but it goes here
话虽如此,您需要了解SQL注入。您应该使用prepared statements而不是直接在查询中添加变量。
答案 1 :(得分:0)
您的查询SQL中有一些错误。
我想你可以尝试:(在Mysql中)
SELECT movies.* FROM history INNER JOIN movies ON history.movie_id = movies.id WHERE user_id = $id
答案 2 :(得分:0)
您在寻找的是MySQL中的total = 13.54
str(total)
>> '13.54'
。您将要执行与此类似的操作:
JOIN
这个SELECT * FROM movies m
JOIN history h ON m.id=h.movie_id
AND h.user_id = $id
ORDER BY <column name>;
背后的基本概念是你从电影(id)中获取主键并在历史上加入相应的外键(movie_id)。
值得注意的是,JOIN
,JOIN
和CROSS JOIN
都是MySQL中的语法等价物。
由于您刚刚开始编程的第一年,我强烈建议您查看INNER JOIN
上的文档并自己完全理解它,而不是复制和粘贴一个适用于此处的答案。从长远来看,这对你有利!请参阅JOIN
语法here上的MySQL文档。