Hallo Zusammen,
ich habe ziemlich triviale DB Schema, aber trotzdem kann keine richtige SELECT - Abfrage konstruieren...
Das Problem ist folgende:
ich habe vier Tabellen: USER, USERSKILL, SKILL und CATEGORY (habe Script zum Erzeugen hinzugefügt)
Tabelle USER:
create table user (
userId int not null primary key auto_increment,
userName varchar(100),
userFullName varchar(100),
userEmail varchar(100)
);
Tabelle SKILL:
create table skill (
skillId int not null auto_increment primary key,
skillTitle varchar(100),
skillDescription varchar(100),
categoryId int,
foreign key (categoryId) references category(categoryId) on delete cascade
);
Tabelle USERSKILL:
create table userskill (
userSkillId int primary key auto_increment not null,
userId int,
skillId int,
selfAssessment varchar(5),
foreign key (userId) references user(userId) on delete cascade,
foreign key (skillId) references skill(skillId) on delete cascade
);
verknüpft USER und SKILL und lässt USERs sich einschätzen wie gut die bestimmte SKILLS drauf haben (USERSKILL.selfAssessment)!
Problem: ich suche nach Benutzer (USER) die z. B. Java SE 6 mit der Note (USERSKILL.selfAssessment) <= 2 haben UND auch Spring mit der Note <= 2 können.
Mein SELECT:
select uSk.* from userskill uSk WHERE (uSk.skillId = 3 and uSk.selfAssessment <= 2) OR ((uSk.skillId = 1 and uSk.selfAssessment <= 2))
aber "ER" liefert mir auch Daten von USER die nur EINE der SKILLs drauf haben! Aber ich brauche NUR die Datensätze von Benutzer die BEIDE SKILLs draufhaben!!! Also wenn ich anstatt OR, AND schreibe liefert "ER" mir nichts, ist klar, "ER" betrachtet ein Datensatz pro einmal und der Datensatz kann nicht gleichzeitig uSk.skillId 3 und 1 haben...
Leider bin ich auf meine "Grenzen" gestoßen und kann leider eine solche Abfrage nicht konstruieren...
Für die Hinweise oder Ratschläge bin ich sehr dankbar!!!
ich habe ziemlich triviale DB Schema, aber trotzdem kann keine richtige SELECT - Abfrage konstruieren...
Das Problem ist folgende:
ich habe vier Tabellen: USER, USERSKILL, SKILL und CATEGORY (habe Script zum Erzeugen hinzugefügt)
Tabelle USER:
create table user (
userId int not null primary key auto_increment,
userName varchar(100),
userFullName varchar(100),
userEmail varchar(100)
);
Tabelle SKILL:
create table skill (
skillId int not null auto_increment primary key,
skillTitle varchar(100),
skillDescription varchar(100),
categoryId int,
foreign key (categoryId) references category(categoryId) on delete cascade
);
Tabelle USERSKILL:
create table userskill (
userSkillId int primary key auto_increment not null,
userId int,
skillId int,
selfAssessment varchar(5),
foreign key (userId) references user(userId) on delete cascade,
foreign key (skillId) references skill(skillId) on delete cascade
);
verknüpft USER und SKILL und lässt USERs sich einschätzen wie gut die bestimmte SKILLS drauf haben (USERSKILL.selfAssessment)!
Problem: ich suche nach Benutzer (USER) die z. B. Java SE 6 mit der Note (USERSKILL.selfAssessment) <= 2 haben UND auch Spring mit der Note <= 2 können.
Mein SELECT:
select uSk.* from userskill uSk WHERE (uSk.skillId = 3 and uSk.selfAssessment <= 2) OR ((uSk.skillId = 1 and uSk.selfAssessment <= 2))
aber "ER" liefert mir auch Daten von USER die nur EINE der SKILLs drauf haben! Aber ich brauche NUR die Datensätze von Benutzer die BEIDE SKILLs draufhaben!!! Also wenn ich anstatt OR, AND schreibe liefert "ER" mir nichts, ist klar, "ER" betrachtet ein Datensatz pro einmal und der Datensatz kann nicht gleichzeitig uSk.skillId 3 und 1 haben...
Leider bin ich auf meine "Grenzen" gestoßen und kann leider eine solche Abfrage nicht konstruieren...
Für die Hinweise oder Ratschläge bin ich sehr dankbar!!!