2012-03-15 3 views
2

Может ли кто-нибудь сказать мне, что не так с этим запросом? это дает ошибку синтаксиса около 2 выберитеКак написать инструкцию select внутри другого select в SQL

SELECT b.mc_boxes_idmc_boxes, 
      t.idtitles, 
      t.title, 
      t.languages_idlanguages, 
      MAX(h.idtitle_history), 
      MAX(h.edition) 
      (SELECT h.preview, h.file WHERE h.idtitle_history = MAX(h.idtitle_history)) 
         FROM mc_boxes_has_titles b 
         LEFT JOIN titles t ON b.titles_idtitles = t.idtitles 
         LEFT JOIN title_history h ON h.titles_idtitles = t.idtitles 
         WHERE b.mc_boxes_idmc_boxes = 12 
         AND h.edition IS NOT NULL 
         GROUP BY b.mc_boxes_idmc_boxes, idtitles 
         ORDER BY b.sortorder; 

ответ

8

выглядит как вам не хватает запятой после MAX(h.edition)

SELECT b.mc_boxes_idmc_boxes, 
      t.idtitles, 
      t.title, 
      t.languages_idlanguages, 
      MAX(h.idtitle_history), 
      MAX(h.edition), 
      (SELECT h.preview, h.file WHERE h.idtitle_history = MAX(h.idtitle_history)) 
FROM mc_boxes_has_titles b 
LEFT JOIN titles t ON b.titles_idtitles = t.idtitles 
LEFT JOIN title_history h ON h.titles_idtitles = t.idtitles 
WHERE b.mc_boxes_idmc_boxes = 12 
    AND h.edition IS NOT NULL 
GROUP BY b.mc_boxes_idmc_boxes, idtitles 
ORDER BY b.sortorder; 

кроме запятой, вы выбираете два поля в вашем подзапрос

SELECT b.mc_boxes_idmc_boxes, 
      t.idtitles, 
      t.title, 
      t.languages_idlanguages, 
      MAX(h.idtitle_history), 
      MAX(h.edition), 
      (SELECT preview FROM title_history WHERE idtitle_history = MAX(h.idtitle_history)), 
      (SELECT [file] FROM title_history WHERE idtitle_history = MAX(h.idtitle_history)) 
FROM mc_boxes_has_titles b 
LEFT JOIN titles t ON b.titles_idtitles = t.idtitles 
LEFT JOIN title_history h ON h.titles_idtitles = t.idtitles 
WHERE b.mc_boxes_idmc_boxes = 12 
    AND h.edition IS NOT NULL 
GROUP BY b.mc_boxes_idmc_boxes, idtitles 
ORDER BY b.sortorder; 
+0

Нет, он все еще не работает :( –

+0

Какая ошибка вы получаете? – Taryn

+0

У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с WHERE h. idtitle_history = MAX (h.idtitle_history)), (SELECT h.file WHER 'в строке 7 –

0

Добавляя к ответу bluefeet, вы можете проверить зарезервированные слова. «Файл», например, является зарезервированным словом на сервере sql.

0

Псевдоним как виртуальный стол. Что-то измените

SELECT b.mc_boxes_idmc_boxes, 
      t.idtitles, 
      t.title, 
      t.languages_idlanguages, 
      MAX(h.idtitle_history), 
      MAX(h.edition) 
      (SELECT h.preview, h.file WHERE h.idtitle_history = MAX(h.idtitle_history)) 
         FROM mc_boxes_has_titles b 
         LEFT JOIN titles t ON b.titles_idtitles = t.idtitles 
         LEFT JOIN title_history h ON h.titles_idtitles = t.idtitles 
         WHERE b.mc_boxes_idmc_boxes = 12 
         AND h.edition IS NOT NULL 
         GROUP BY b.mc_boxes_idmc_boxes, idtitles 
         ORDER BY b.sortorder) as virtual_column_alias; 

Проверьте это. Надеюсь, это сработает.

+0

Та же ошибка: синтаксическая ошибка во втором select :( –

Смежные вопросы