2013-07-29 4 views
0

Это мой MySQL запросов:MySQL обратный запрос ничего

SELECT a.hinh, cate.ten 
FROM (
     SELECT * FORM pro WHERE pro.id IN (20, 21) 
    ) AD a 
INNER JOIN cate c 
ON a.cateid = c.cate.id 

Но

SELECT a.hinh, cate.ten 
FROM pro AS a 
INNER join cate c 
on a.cateid = c.cate.id 

Выходы правильный результат.

Можете ли вы предложить, что я делаю неправильно?

+0

Вы можете предоставить образцы данных ??? –

ответ

0

Ваше вышепредложение даст вам ошибку. Вы ошибаетесь AS как AD. Кроме того, нет необходимости использовать подзапрос, когда вы можете сделать это прямо так:

SELECT a.hinh, cate.ten 
    FROM pro as a 
INNER JOIN cate 
    ON a.cateid = cate.id 
WHERE a.id IN (20,21) 

Кроме того, ваш запрос ничего не возвращается только тогда, когда ID 20 и 21 не доступны в таблице cate. Если вы хотите, чтобы получить записи, даже если ID 20 и 21 не доступен в таблице cate, вы можете использовать LEFT JOIN для этого:

SELECT a.hinh, cate.ten 
    FROM pro as a 
    LEFT JOIN cate 
    ON a.cateid = cate.id 
WHERE a.id IN (20,21) 

Это будет возвращать записи из таблицы pro но вернется NULL для таблицы cate для ID 20 и 21.

+0

вы можете объяснить нам, как ваш запрос логически отличается от одного из них. Я имею в виду, что это решит проблему с ОП, я так не думаю? –

+0

@AmitSingh - Да, обновил ответ. – hims056

+0

'как' я думаю, что пропустить написано только ... им все еще не убедили друга ... я думаю, что оба одинаковы ... ваш второй запрос retur все строки таблицы 1, которые не уверены, что OP хотят это или нет –

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