2017-01-31 4 views
-3

У меня есть две реляционные таблицы [категории] и [трусы]. Я хочу выбрать последний ROW FROM briefs WHERE briefs.category_id = category.category_id;SELECT LAST ROW WITH INNER JOIN

[Category] 
category_id 
category_name 

[briefs] 
brief_id 
category_id 
brief_file_num 
brief_date 



"SELECT brief_file_num,category_id FROM briefs,category 
WHERE briefs.category_id = category.category_id ORDER BY briefs.brief_file_num 
DESC LIMIT 1"; 

Я получаю следующее сообщение об ошибке: "Column 'category_id' in field list is ambiguous"

+0

право ЗЕЬЕСТА списка выбора с настольным name..like если х столбцы в table1 вы должны положить table1.x в вашем выберите пункт запрос – RohitS

+0

виду Теряя CAPS в названии ?? это называется «Кричать», и никто не любит кричать, не так ли? Я так не думал. –

+0

всегда старайтесь использовать формат: 'table_name'.'column_name' как' alias' –

ответ

0

Вы должны explicitally добавить имена таблиц для избежать двусмысленности

"SELECT briefs.brief_file_num, briefs.category_id 
    FROM briefs,category 
    WHERE briefs.category_id = category.category_id ORDER BY briefs.brief_file_num 
    DESC LIMIT 1"; 
0

Обе таблицы имеют category_id, который является неоднозначным. Используйте вместо этого category.category_id!

SELECT brief_file_num,category.category_id FROM briefs,category 
WHERE briefs.category_id = category.category_id ORDER BY briefs.brief_file_num 
DESC LIMIT 1 
1

Даже когда обе категории имеют одинаковое значение. вам нужно указать, в какой таблице вы ссылаетесь, потому что у обоих есть столбец с таким именем.

Также используйте explict JOIN sintaxis, Аарон Бертран написал хорошую статью Bad habits to kick : using old-style JOINs об этом.

SELECT briefs.brief_file_num, 
     briefs.category_id  
FROM briefs 
INNER JOIN category 
    ON briefs.category_id = category.category_id 
ORDER BY briefs.brief_file_num 
DESC LIMIT 1"