2013-12-03 3 views
1

Я пытаюсь создать оператор выбора, который будет использоваться в представлении. Цель состоит в том, чтобы создать представление, показывающее описание офиса, описание партии, имя кандидата и действующий индикатор. У меня есть следующие таблицы моя база данных:MySQL Select Statement не работает

database layout

SELECT `OFFICE DESCRIPTION`, 
     `PARTY DESCRIPTION`, 
     `CANDIDATE NAME`, 
     `INCUMBANT INDICATOR` 
FROM OFFICE,PARTY,CANDIDATE 
WHERE CANDIDATE.`OFFICE CODE`= OFFICE.`OFFICE CODE` 
     AND CANDIDATE.`CANDIDATE ID`=`PARTY CANDIDATE`.`CANDIDATE ID` 
     AND `PARTY CANDIDATE`.`PARTY CODE`=PARTY.`PARTY CODE`; 

Ошибка:

#1054 - Unknown column 'PARTY CANDIDATE.CANDIDATE ID' in 'where clause' 

Я проверил все столбцы существуют для этого SQL заявления на работу, но по какой-то причине он держит возвращая ошибку, что идентификатор PARTY CANDIDAT.CANDIDATE не существует. Любая помощь будет оценена по достоинству. Сообщите мне, есть ли что-то еще, что вам нужно для меня, включая определения и макеты таблиц.

+0

предоставить таблицу desc также –

+0

Является ли изображение достаточно? – Kyle

+1

ouch, используя поля таблицы, содержащие пробелы, звучит как плохая идея, даже если есть обходной путь к ней. – Nemoden

ответ

2

Я думаю, что проблема в вашей статье FROM и WHERE.

FROM OFFICE, 'PARTY CANDIDATE', CANDIDATE 

WHERE положение должно быть как

CANDIDATE.'CANDIDATE ID' = 'PARTY CANDIDATE'.'CANDIDATE ID' 
4
  1. Вы должны вложить свои имена полей с обратными кавычками
  2. Вы отсутствующая партия Кандидатом от вашего из списка

    SELECT `OFFICE DESCRIPTION`,`PARTY DESCRIPTION`,`CANDIDATE NAME`,`INCUMBANT INDICATOR` 
    FROM OFFICE,PARTY,CANDIDATE,`PARTY CANDIDATE` 
    WHERE CANDIDATE.`OFFICE CODE`=OFFICE.`OFFICE CODE` 
        AND CANDIDATE.`CANDIDATE ID`=`PARTY CANDIDATE`.`CANDIDATE ID` 
        AND `PARTY CANDIDATE`.`PARTY CODE`=PARTY.`PARTY CODE`; 
    
+0

Теперь я вижу, что вы переформатировали свой запрос, похоже, что единственное, что вам не хватает, это 'PARTY CANDIDATE' в FROM –

+0

Привет, спасибо за ответ , Я дал это выстрел, и он действительно работал, но теперь у меня есть дубликаты людей на выходе. – Kyle

+0

Хорошо, я смог исправить это, используя команду DISTINCT. – Kyle

1

попробовать это:

SELECT OFFICE.`OFFICE DESCRIPTION`,PARTY.`PARTY DESCRIPTION`,CANDIDATE.`CANDIDATE NAME`,`INCUMBANT INDICATOR` FROM OFFICE,PARTY,CANDIDATE WHERE CANDIDATE.`OFFICE CODE`=OFFICE.`OFFICE CODE` AND CANDIDATE.`CANDIDATE ID`=`PARTY CANDIDATE`.`CANDIDATE ID` AND  `PARTY CANDIDATE`.`PARTY CODE`=PARTY.`PARTY CODE`; 
2

Решение было использовать следующий SQL-код которой помогает @ Justin-кианг, и включают в себя определенную функцию.

SELECT DISTINCT `OFFICE DESCRIPTION` , `PARTY DESCRIPTION` , `CANDIDATE NAME` , `INCUMBANT INDICATOR` 
FROM OFFICE, PARTY, CANDIDATE, `PARTY CANDIDATE` 
WHERE CANDIDATE.`OFFICE CODE` = OFFICE.`OFFICE CODE` 
AND CANDIDATE.`CANDIDATE ID` = `PARTY CANDIDATE`.`CANDIDATE ID` 
AND `PARTY CANDIDATE`.`PARTY CODE` = PARTY.`PARTY CODE` 
LIMIT 0 , 30;