我对sql有基本的了解,并建立了一个必须在24小时内提交的小型数据库。我在这里用sqlfiddle制作了一个模式 http://www.sqlfiddle.com/#!9/28fcd
我需要运行一个查询来搜索一个工作人员(从表格出现或教学)并返回module_code和module_title(从表格课程)中为所述工作人员讲授的课程。 我花了一天半的时间试图解决这个问题(这可能让我很沮丧),现在我迫切需要一些帮助。
表格架构如下。如果这不是事情的完成方式,请道歉。
CREATE TABLE course (
module_code VARCHAR (10),
module_title VARCHAR (40),
PRIMARY KEY (module_code));
CREATE TABLE teaching (
staff VARCHAR (40),
room VARCHAR (10),
PRIMARY KEY (staff));
CREATE TABLE occurrence (
module_code VARCHAR (10),
Instance VARCHAR (1),
staff VARCHAR (40),
year INT (1),
hours INT (2),
PRIMARY KEY (instance, module_code),
FOREIGN KEY (staff) REFERENCES teaching (staff));
INSERT INTO teaching VALUES
('Louise Ashby','C2-07a'),
('Abdul Razak','C2-09'),
('Brennen Tighe','C2-06'),
('Andrew Parker','C2-04'),
('Tim Goddard','C2-04');
INSERT INTO course VALUES
('CPU4000','Core Skills'),
('CPU4003','Introduction to Programming'),
('CPU4005','Networking Fundamentals');
INSERT INTO occurrence VALUES
('CPU4000','A','Louise Ashby',1,5),
('CPU4000','B',NULL,1,0),
('CPU4000','C',NULL,1,0),
('CPU4003','A','Abdul Razak',1,6),
('CPU4003','B','Brennen Tighe',1,6),
('CPU4003','C','Andrew Parker',1,6),
('CPU4005','A','Tim Goddard',1,0),
('CPU4005','B',NULL,1,0),
('CPU4005','C',NULL,1,0);
我正在使用的SQL有点像: SELECT module_title,module_code 从当然,发生 发生在什么地方。路易斯阿什比&#39 ;;
这告诉我Column' module_code'在字段列表中是不明确的
答案 0 :(得分:0)
select
`teaching`.staff,
`course`.module_code,
`course`.module_title
from
`teaching`
inner join
`occurrence` on
`occurrence`.staff = `teaching`.staff
inner join
`course` on
`course`.module_code = `occurrence`.module_code
答案 1 :(得分:0)
查询就像:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 3
void inputArr1(int arr1[]);
void maxValueC(int maxValue);
void inputArr2(int arr2[], int maxValue);
void inputArr3(int arr1[], int arr3[], int i, int count3);
void printArr3(int arr1[], int arr3[]);
void main()
{
int i = 0, j = 0, count = 0, count3 = 0, maxValue = 0, arr1[N], arr2[N], arr3[N];
inputArr1(arr1);
printf("please enter maxValue: ");
scanf("%d", &maxValue);
while (maxValue <= 0)
{
maxValueC(maxValue);
}
srand(time(NULL));
inputArr2(arr2, maxValue);
printf("\nArray1: ");
for (i = 0; i < N; i++)
{
printf("%d ", arr1[i]);
}
printf("\nArray2: ");
for (i = 0; i < N; i++)
{
printf("%d ", arr2[i]);
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
if (arr1[i] != arr2[j])
{
count++;
}
}
if (count == N)
{
inputArr3(arr1, arr3, i, count3);
}
count = 0;
}
printArr3(arr1, arr3);
getch();
}
void inputArr1(int arr1[])
{
int i;
for (i = 0;i < N;i++)
{
printf("Please enter a digit[%d]: ",i);
scanf("%d", &arr1[i]);
printf("\n");
}
}
void maxValueC(int maxValue)
{
printf("Please enter a number that is bigger than 0!!!");
scanf("%d", &maxValue);
}
void inputArr2(int arr2[], int maxValue)
{
int i;
for (i = 0; i < N; i++)
{
arr2[i] = rand() % (maxValue);
}
}
void inputArr3(int arr1[], int arr3[], int i, int count3)
{
arr3[count3] = arr1[i];
count3++;
}
void printArr3(int arr3[])
{
int i;
printf("\nArray3: ");
for (i = 0; i < N; i++)
{
printf("%d", arr3[i]);
}
}
根据您的架构。但是,在实际应用程序中,您不会使用这样的架构。
答案 2 :(得分:0)
将它们连接在一起时,必须为表提供别名。 *表示全部&#39;。所以上面的查询是从c表中选择满足条件的所有列。模糊的错误可能是因为你没有指定加入表的键。希望有所帮助。
抱歉,打算回复你的评论而不是添加答案。仍然是stackoverflow的新手。