2013-03-12 77 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