我试图加入2个具有相同类别的表,但它不能正常工作,而不是返回结果。
我有2张电视节目和电影,他们都有列类别现在我想通过所有这些类别查看类别是否匹配并返回它们但我不知道这有什么问题。请看一下,谢谢!
$query = $connection->prepare("
SELECT
a.id,
a.hash,
a.categories,
a.thumb_location,
a.name,
a.year,
b.id,
b.hash,
b.categories,
b.thumb_location,
b.name,
b.year
FROM movies AS a
LEFT JOIN series AS b
ON a.categories = b.categories
WHERE a.categories LIKE ? OR b.categories LIKE ? ORDER BY a.id DESC
");
答案 0 :(得分:0)
我不确定我是否理解得很好,但试一试:
$query = $connection->prepare("
SELECT a.hash,
a.categories,
a.thumb_location,
a.name,
a.year,
b.hash,
b.categories,
b.thumb_location,
b.name,
b.year
FROM movies AS a
LEFT JOIN series AS b
ON a.hash = b.hash
WHERE a.categories = b.categories ORDER BY id DESC
“);
答案 1 :(得分:0)
您在categories
部分查询中使用了名为WHERE
的列,但在表movies
和series
中有两个具有此名称的列,因此数据库赢了'知道,要搜索哪一列。
如果要查找行,可能需要指定WHERE a.categories LIKE ? OR b.categories LIKE ?
,其中某些类别是为电影或系列设置的。
如果要按类别搜索电影和系列对,则应按该列加入它们。但如果类别类似于“喜剧,动作”等,它将无法运作。您应该考虑重新构建数据库并创建表categories
,然后movies_categories
,其中包含电影的ID和类别行的ID以及具有相同结构的series_categories
。您可以通过选择很多查询来选择与系列等相同类别的电影。