2010-06-24 2 views
1

Я пытаюсь выполнить запрос для фильтрации по строкам из одной таблицы, а затем присоединить результаты к другой таблице и затем отфильтровать дополнительные строки.Подзапрос по соединению

Вот запрос я написал:

SELECT * 
    FROM (SELECT media.id AS id2, media.flagged AS flagged2, media.item_status AS status2 
      FROM media 
     WHERE flagged2 != 'nsfw' 
      AND status2 != 'deleted' 
    ORDER BY id2 DESC LIMIT 0,5) 
    JOIN media on info.mid = media.id 
WHERE info.topic = 'food_drink' 
    OR info.topic='cooking' 
GROUP BY info.mid 

Я думаю, что я довольно близко, чтобы получить запрос работает, но я получаю сообщение «Каждый производная таблица должна иметь свой собственный псевдоним.» Я искал это и из того, что я прочитал, мне нужно, чтобы псевдоним части подзапроса, который я пробовал, но я все еще не могу заставить его работать.

+0

просто быстрый вопрос ... где вы получили «информацию»? это псевдоним или таблица? – hallie

+0

@hallie: Учитывая, что Эрик не использовал табличные псевдонимы, я считаю, что это таблица. Эрик должен сообщить нам, если в этом вопросе должны быть ссылки на 'INFO', иначе как они относятся к производной таблице ... –

+0

Я подозреваю, что ... ПРИСОЕДИНЯЙТЕ медиа на info.mid = media.id. .. на самом деле ... JOIN ** info ** on info.mid = media.id ... –

ответ

3

Использование:

SELECT * 
    FROM (SELECT media.id AS id2, media.flagged AS flagged2, media.item_status AS status2 
      FROM media 
     WHERE flagged2 != 'nsfw' 
      AND status2 != 'deleted' 
     ORDER BY id2 DESC LIMIT 0, 5) x 
    JOIN media on info.mid = media.id 
WHERE info.topic = 'food_drink' 
    OR info.topic='cooking' 
GROUP BY info.mid 

Смотрите x, только вне скобок, но перед тем, присоединиться? Вот что такое ошибка. Материал внутри скобок после FROM и до JOIN - это производная таблица (встроенное представление AKA), а MySQL требует, чтобы вы указали для нее псевдоним таблицы. Затем, когда вы ссылаетесь на любые столбцы внутри, вы должны использовать x.id2/etc.

+0

А это имеет смысл. Я думал, что часть моего псевдонима была в подзапросе. Просто переписал запрос на основе ваших данных, и он работает отлично! – Eric

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