查询从MySQL中的关系数据库获取数据

时间:2013-12-10 11:15:00

标签: php mysql sql

我在下面有这种数据库格式(取自phpmyadmin,这些表已经是关系型的):

database

我正在尝试通过“tagmap”关系映射获取所有“videos.Video_Name,videos.Video_URL”和某些“tags.Tag_Name”。我以前从来没有真正使用过MySQL而不是SELECT和DELETE,并且JOIN的语法证明太难以承受,而且在这一点上寻求帮助要比继续抨击它更快。

我知道我应该使用JOIN但我不知道语法可以实现我想要的。

我尝试的完全无效的查询是:

SELECT videos.Video_URL, videos.Video_Name
FROM tagmap
INNER JOIN videos ON videos.Video_ID = tagmap.Video_ID
INNER JOIN tagmap ON tagmap.Tag_ID = tags.Tag_ID
WHERE tags.Tag_Name = '$_GET[tag]'

但它没有返回任何行。

2 个答案:

答案 0 :(得分:0)

如果您的查询没有返回原始数据并且没有返回错误,那么它不会“完全无效”。

确实,看一下代码,它应该完全按照你所说的实现。因此,如果它没有返回任何行,那么原因必须是没有匹配的数据。

将其分解以找出缺少数据的位置:

SELECT COUNT(*)
FROM tags
WHERE tags.Tag_Name = '$_GET[tag]';

如果您获得非零值,请尝试....

SELECT COUNT(DISTINCT tagmap.Video_ID), COUNT(*)
FROM tags INNER JOIN tagmp
ON tags.tag_ID=tagmap.tag_ID
WHERE tags.Tag_Name = '$_GET[tag]';

(顺便说一句,你可能想读一下SQL注入)。

答案 1 :(得分:-1)

现在尝试一下。

SELECT videos.Video_Name, videos.Video_URL FROM videos,tags,tagmap
WHERE videos.Video_ID = tagmap.Video_ID AND tags.Tag_ID = tagmap.Tag_ID AND
tags.Tag_Name='$_GET[tag]'

与联接相同的结果

SELECT videos.Video_Name, videos.Video_URL FROM tagmap
RIGHT JOIN videos ON videos.Video_ID = tagmap.Video_ID 
LEFT JOIN tags ON tags.Tag_ID = tagmap.Tag_ID 
WHERE tags.Tag_Name = '$_GET[tag]'

希望它不会给出任何错误。

感谢。