2013-12-10 67 views
0

我在下面這個數據庫格式(從phpMyAdmin的拍攝,該表是關係型的話):查詢來獲取從關係數據庫中的數據在MySQL

database

我試圖讓所有的「videos.Video_Name ,videos.Video_URL「通過」tagmap「關係映射關聯一定的」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]' 

但沒有返回行。

+0

'$ _GET [tag]'可能未定義可能需要左連接 –

+1

是否所有表都有值?另外,**不要在你的查詢中放置原始變量**!您的查詢對SQL注入開放。 – BenM

+0

'FROM'行應該引用'tags'而不是'tagmap'也 –

回答

-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]' 

希望它不會給任何錯誤。

謝謝。

+0

我試過了,它沒有工作。我的也沒有。或加入左邊的建議。這是結果:http://i.imgur.com/71Efcrq.png從這段代碼:http://i.imgur.com/DXYf3gw.png – Jewel

+0

Twitch,現在我改變了查詢。現在請再檢查一次。 –

+0

-1:這在功能上與原始查詢沒有區別。 – symcbean

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注入)。