У меня возникают проблемы с этим запросом, который использует три разные таблицы. Я также считаю, что буду использовать ключевые слова NOT EXISTS и NOT WITHIN, но я не полностью уверен в этом. Я опубликую определение запроса, таблицы, которые я использую, и то, что я пробовал до сих пор. Спасибо за помощь в продвижении!Как написать запрос, который объединяет 3 таблицы
Запрос:
Find the users that create jobs that utilize all proteins.
Таблицы:
CREATE TABLE Protein(pid INTEGER,name varchar(50),PRIMARY KEY(pid));
CREATE TABLE Job(uid INTEGER,job_id INTEGER AUTO_INCREMENT,input
varchar(500),status varchar(100),start_time time,finish_time time,FOREIGN
KEY(uid) REFERENCES User(uid) ON DELETE CASCADE,PRIMARY KEY(job_id));
CREATE TABLE User(uid INTEGER AUTO_INCREMENT,address VARCHAR(40),city
VARCHAR(20),state VARCHAR(20),zipcode VARCHAR(10), username
VARCHAR(10),email VARCHAR(30),primary key (uid));
CREATE TABLE job_protein(job_id INTEGER, pid INTEGER, PRIMARY KEY(job_id, pid));
Что Ive пытался до сих пор ...
SELECT u.uid, j.jobid, count(j.jobid)
FROM job j
INNER JOIN job_proteins p
ON j.jobid = p.jobid
INNER JOIN user u
ON p.uid = u.uid
GROUP BY j.jobid
HAVING count(j.jobid) = (SELECT count(pid) FROM Protein);
ли то, что я получить работу, которые используют каждый белок ?.
"ON p.uid = u.uid" => "ON j.uid = u.uid" ad job_protein не имеет uid. – niry
в sql-версии, которую я использую, я думаю, что этот запрос не сработает, потому что u.uid не содержится в предложении group by или в агрегированной функции –