php-mysql中的问题
我想从两个照片和视频表中获得不同的类别名称,它们的类别名称与类别表中的相同 在这里,我试图执行一个mysql查询,以从主类别表中获取不同的类别名称,这些名称同时出现在两个表中,甚至出现在一个表中,即照片和视频中 mysql查询:php-mysql中的问题,php,mysql,sql,Php,Mysql,Sql,我想从两个照片和视频表中获得不同的类别名称,它们的类别名称与类别表中的相同 在这里,我试图执行一个mysql查询,以从主类别表中获取不同的类别名称,这些名称同时出现在两个表中,甚至出现在一个表中,即照片和视频中 mysql查询: SELECT DISTINCT t1.category_name FROM categories t1, photos t2, videos t3 WHERE t1.category_name=t2.category OR t1.category_name=t3.cat
SELECT DISTINCT t1.category_name FROM categories t1, photos t2, videos t3 WHERE
t1.category_name=t2.category OR t1.category_name=t3.category AND t2.block=0 AND
t3.block=0 ORDER BY t1.category_name asc
这是所有表的结构
类别::主表
照片::包含上述类别的照片
视频::包含上述类别的视频
请帮帮我…如果我正确理解了这个问题,这就行了:
select distinct categories.name
from categories
left join photos on photos.category = categories.name
left join videos on videos.category = categories.name
where (photos.id IS NOT NULL) OR (videos.id IS NOT NULL);
但是你应该使用外键来连接类别和照片/视频。
我会使用EXISTS子句
将photos.category的数据类型更改为INT
当表格变大时,使用videos.category进行整型会快得多
SELECT t1.category_name
FROM categories t1,
JOIN photos p ON p.category = t1.id
JOIN videos v ON v.category = t1.id
GROUP BY t1.category_name
ORDER BY t1.category_name ASC
您需要将photos.category的数据类型更改为INT而不是varchar,并对videos.category执行相同的操作,然后尝试下面的查询
SELECT Cat.category_name
FROM categories As Cat,
JOIN photos AS P ON P.category = cat.id JOIN videos AS vid ON vid.category = Cat.id
GROUP BY Cat.category_name
ORDER BY Cat.category_name ASC
谢谢。请记住,OR的优先级比AND@Phil当前位置我已在顶部添加了我的问题..您可能想将其作为一个问题来表达,这样就可以清楚地知道您在追求什么,什么不起作用
SELECT Cat.category_name
FROM categories As Cat,
JOIN photos AS P ON P.category = cat.id JOIN videos AS vid ON vid.category = Cat.id
GROUP BY Cat.category_name
ORDER BY Cat.category_name ASC