2013-07-12 178 views
0

您好(我是新来的PHP),排序的查询结果/ MySQL的子查询

我不能完全弄清楚一个子查询我试图让的语法,这是查询:

SELECT * FROM show_episode, shows, show_episode_airdate, show_moyenne 
WHERE season = 1 AND episode = 1 
AND shows.imdb_id = show_episode.imdb_id_show 
AND show_episode_airdate.episode_id = show_episode.episode_id 
AND show_moyenne.show_id = shows.id 
AND show_episode_airdate.airdate < '2013-07-12' 
ORDER BY show_episode_airdate.airdate DESC LIMIT 10 

一旦这样做,我想订购由show_moyenne.moyenne那些10个选中的行与类似的东西:

SELECT * (FROM show_episode, shows, show_episode_airdate, show_moyenne 
WHERE season = 1 AND episode = 1 
AND shows.imdb_id = show_episode.imdb_id_show 
AND show_episode_airdate.episode_id = show_episode.episode_id 
AND show_moyenne.show_id = shows.id 
AND show_episode_airdate.airdate < '2013-07-12' 
ORDER BY show_episode_airdate.airdate DESC LIMIT 10) 
* ORDER BY show_moyenne.moyenne DESC 

这是不正确的,任何人都可以告诉我正确的方式做这个 ?

谢谢,任何帮助赞赏!

回答

1
SELECT x.* 
    FROM 
     (SELECT * 
      FROM show_episode e 
      JOIN shows s 
      ON s.imdb_id = e.imdb_id_show 
      JOIN show_episode_airdate a 
      ON a.episode_id = e.episode_id 
      JOIN show_moyenne m 
      ON m.show_id = s.id 
     WHERE season = 1 
      AND episode = 1 
      AND a.airdate < '2013-07-12' 
     ORDER 
      BY a.airdate DESC 
     LIMIT 10 
    ) x 
    ORDER 
    BY moyenne; 
+0

这就是我想要做的,谢谢! 虽然,我得到重复的列episode_id错误? – Callombert

+0

请勿使用“SELECT *”。命名您实际想要返回的列。 – Strawberry

+0

我会尝试一下。 – Callombert

2
Select * from 
(SELECT * FROM show_episode, shows, show_episode_airdate, show_moyenne 
WHERE season = 1 AND episode = 1 
AND shows.imdb_id = show_episode.imdb_id_show 
AND show_episode_airdate.episode_id = show_episode.episode_id 
AND show_moyenne.show_id = shows.id 
AND show_episode_airdate.airdate < '2013-07-12' 
ORDER BY show_episode_airdate.airdate DESC LIMIT 10) as j 
order by j.moyenne DESC 

我希望这能有一定的帮助。

+0

是的,我改变了它。 –