2013-03-12 75 views
0

我已經嘗試了多個stackoverflow上的答案,我似乎無法找到適當的解決方案來解決我的問題。我想現在當前查詢爲:使用多個選擇或JOIN ON在列表中添加列響應

SELECT (
SELECT * FROM mds_media 
) AS m 
(
SELECT video_id FROM mds_featured WHERE video_id = m.id 
) AS f 

ORDER BY f.video_id DESC, m.id DESC 

我也試着加入

SELECT mds_media.*, mds_featured.* FROM mds_media AS m 
JOIN mds_featured 
ON mds_featured.video_id = m.id 
ORDER BY mds_featured.video_id DESC, mds_media.id DESC 

我想要做的唯一一件事就是mds_featured列VIDEO_ID重視,如果它的整體結果是找到的媒體的ID。所以我的mysql_fetch_array()例如輸出:

array(id,name,blah,blah,blah,video_id)//當然包含值 //如果mds_featured有一行存在與mds_media中id相同的值在它的VIDEO_ID柱

陣列(ID,姓名,等等,等等,等等) // IF mds_featured.video_id不具有本與mds_media.id

行欣賞任何建議/提供解決方案的有用提示。要麼我沒有正確閱讀,要麼我在某處搞亂了,我看到的答案並沒有幫助我。對不起,如果我能解決這個問題,並沒有提供解決方案。

我不打算改變我的數據庫表有一個包含featured/video_id的列,因爲表是分開的原因。爲他人日後參考


更新工作代碼:

SELECT m.id, m.name, mds_featured.video_id 
FROM mds_media m 
LEFT JOIN mds_featured 
ON mds_featured.video_id = m.id 
ORDER BY mds_featured.video_id DESC, m.id DESC 

由於Vatev

+0

您不能在每行中使用不同數量的列的結果集。一個'LEFT JOIN'將允許你從mds_media獲得所有的記錄,在非特徵的記錄中有一些NULL。 – Vatev 2013-03-12 17:26:35

+0

謝謝你的回答。我先試了一下,併成功,但我的ID列正在消失。兩個表都有一個id列。讓我重溫一下:沒有特色的東西沒有id列。 – LmOtaku 2013-03-12 17:31:07

+0

只是一個猜測,但也許你不應該從兩個選擇'*'? – Vatev 2013-03-12 17:32:18

回答

0

改變你加入一個LEFT JOIN。這將爲您提供mds_media中的所有行匹配與mds_featured匹配的任何行。如果不匹配,mds_featured列將爲空。

SELECT mds_media.*, mds_featured.* 
FROM mds_media AS m 
LEFT JOIN mds_featured 
ON mds_featured.video_id = m.id 
ORDER BY mds_featured.video_id DESC, mds_media.id DESC 
+0

謝謝:) Vatev有點快,但兩個答案都是正確的。我只是沒有正確使用LEFT JOIN。 – LmOtaku 2013-03-12 17:45:36