2013-10-13 3 views
1

안녕하세요 데이터베이스에서 시간 시트보기를 만들려고했지만 admin_id 열에 문제가 있습니다. 나는 작동하지 않는 이유가 혼란스러워서 다른 코드에서이 코드를 재사용하고있다. 제발 도와주세요 !!!오류 코드 : 1052 필드 목록의 'admin_id'열이 모호합니다.

Select 문

SELECT timesheet_id, class, day, hour, week, admin_id, date_added FROM timesheet, day, classes, admin 
WHERE timesheet_id AND 
classes.class_id = timesheet.class_id AND 
day.day_id = timesheet.day_id AND 
admin.admin_id = timesheet.admin_id ORDER BY timesheet.timesheet_id.; 

데이터베이스 코드

'CREATE DATABASE /*!32312 IF NOT EXISTS*/`timesheet` /*!40100 DEFAULT CHARACTER SET latin1 */; 

USE `timesheet`; 

/*Table structure for table `admin` */ 

DROP TABLE IF EXISTS `admin`; 

CREATE TABLE `admin` (
    `admin_id` int(100) NOT NULL AUTO_INCREMENT, 
    `username` varchar(10) DEFAULT NULL, 
    `password` char(30) DEFAULT NULL, 
    PRIMARY KEY (`admin_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 

/*Data for the table `admin` */ 

insert into `admin`(`admin_id`,`username`,`password`) values (1,'1627724','troll1'),(2,'1627406','troll2'); 

/*Table structure for table `classes` */ 

DROP TABLE IF EXISTS `classes`; 

CREATE TABLE `classes` (
    `class_id` int(11) NOT NULL AUTO_INCREMENT, 
    `class` varchar(30) DEFAULT NULL, 
    PRIMARY KEY (`class_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; 

/*Data for the table `classes` */ 

insert into `classes`(`class_id`,`class`) values (1,'Validate and Test'),(2,'Complex Web'),(3,'Advanced OO Web'),(4,'Project Management'),(5,'Project Web'),(6,'Meeting'),(7,'Study'),(8,'Software Development'); 

/*Table structure for table `day` */ 

DROP TABLE IF EXISTS `day`; 

CREATE TABLE `day` (
    `day_id` int(11) NOT NULL AUTO_INCREMENT, 
    `day` varchar(15) NOT NULL, 
    PRIMARY KEY (`day_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; 

/*Data for the table `day` */ 

insert into `day`(`day_id`,`day`) values (1,'Monday'),(2,'Tuesday'),(3,'Wednesday'),(4,'Thursday'),(5,'Friday'),(6,'Saturday'),(7,'Sunday'); 

/*Table structure for table `menu` */ 

DROP TABLE IF EXISTS `menu`; 

CREATE TABLE `menu` (
    `Menu_id` int(100) NOT NULL AUTO_INCREMENT, 
    `Menu` char(10) DEFAULT NULL, 
    PRIMARY KEY (`Menu_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; 

/*Data for the table `menu` */ 

insert into `menu`(`Menu_id`,`Menu`) values (1,'index'),(2,'contact us'),(3,'project'),(4,'timesheets'); 

/*Table structure for table `timesheet` */ 

DROP TABLE IF EXISTS `timesheet`; 

CREATE TABLE `timesheet` (
    `timesheet_id` int(11) NOT NULL AUTO_INCREMENT, 
    `class_id` int(11) NOT NULL, 
    `day_id` int(11) NOT NULL, 
    `hour` float DEFAULT NULL, 
    `week` varchar(8) NOT NULL, 
    `admin_id` int(11) NOT NULL, 
    `date_added` date NOT NULL, 
    PRIMARY KEY (`timesheet_id`), 
    KEY `class_fk` (`class_id`), 
    KEY `day_fk` (`day_id`), 
    KEY `admin_fk` (`admin_id`), 
    CONSTRAINT `admin_fk` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`), 
    CONSTRAINT `class_fk` FOREIGN KEY (`class_id`) REFERENCES `classes` (`class_id`), 
    CONSTRAINT `day_fk` FOREIGN KEY (`day_id`) REFERENCES `day` (`day_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; 
/*Data for the table `timesheet`' 

insert into `timesheet`(`timesheet_id`,`class_id`,`day_id`,`hour`,`week`,`admin_id`,`date_added`) values (1,1,1,1,'week1',2,'2013-10-14'),(2,2,5,6,'week1',2,'2013-10-14'),(3,1,3,5,'week1',2,'2013-10-14'),(4,5,6,2,'week1',2,'2013-10-14'),(5,8,6,4,'week1',2,'2013-10-14'); 
이 표에 ADMIN_ID라는 하나 이상의 열이 너무 mysql을 반환 할 모르는 쿼리에 액세스하고 있다는 것을 의미
+0

나는 그것을 알아 냈다. admin 테이블에서 관리자 아이디를 찾지 못했다. –

답변

8

의 결과.

그래서 테이블 별칭 (관리자 또는 작업 표 중) 포함하도록 선택 문을 변경 : admin_id 이후 SELECT timesheet_id, class, day, hour, week, timesheet.admin_id, date_added FROM timesheet

+0

고마워. 알아 냈어. 나는 1 년 동안 웹 개발을 공부 했으니 까. 그래서 신참 실수를 저질렀다. 이 같은 LOL –

1

당신이없이 SELECT 목록에서 사용할 수 없습니다 2 테이블 (admintimesheet)의 존재를 테이블 이름 또는 그 별칭입니다.