2013-02-20 2 views
0

У меня есть проблемы с помощью следующего запроса:SQL псевдонимов для подзапроса

SELECT * FROM (
    (SELECT * FROM Images 
    WHERE create_user_id=:user_id) RIGHT INNER JOIN 
    (SELECT * FROM PhotoGallery) ON id=centity_id 
) 
ORDER BY centity_id; 

Я получаю 1248 - Каждую производную таблицу должна иметь свою собственную ошибку псевдонима, и я знаю, что нужно дать эти таблицы псевдонимов, но все, что я do, я всегда получаю ошибку. Может ли кто-нибудь помочь мне решить эту проблему? Большое спасибо!

+0

я думаю, что вы должны предоставить таблицы псевдоним подзапрос например (SELECT * FROM изображений WHERE create_user_id =: user_id), как TableA – dekdev

ответ

0

Попробуйте

SELECT * 
    FROM Images i RIGHT JOIN 
     PhotoGallery p ON i.id=p.centity_id 
WHERE i.create_user_id=:user_id 
ORDER BY p.centity_id 

Основываясь на ваш DDL и ваш желаемый результат присоединиться могут быть RIGHT, INNER или LEFT, но не RIGHT INNER JOIN

+0

вы правы, спасибо – kokoseq

+0

@kokoseq Мы всегда рады. Пожалуйста, рассмотрите [accept] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) ответ, если это было полезно. Счастливое кодирование. – peterm

0

Вашего подзапросов нужен псевдоним. Что-то вроде:

SELECT * FROM (
    (SELECT * 
    FROM Images 
    WHERE create_user_id=:user_id 
) i RIGHT INNER JOIN 
    PhotoGallery pg 
    ON i.id=pg.centity_id 
) 
ORDER BY centity_id; 
0

Я никогда не слышал о DBMS, которые поддерживали "RIGHT INNER JOIN". Выберите один из

  • INNER JOIN или
  • правого внешнего соединения, или
  • RIGHT JOIN (что должно означать то же самое, как РЕГИСТРИРУЙТЕСЬ ПРАВЫЙ НАРУЖНЫЙ).
+0

О, спасибо, это была одна из проблем ... – kokoseq

0

Если вы делаете выбор *, вам не нужно делать подзапрос.

SELECT * FROM Images 
    RIGHT OUTER JOIN PhotoGallery ON id=centity_id 
WHERE create_user_id = :user_id 
ORDER BY centity_id; 
Смежные вопросы