2017-02-21 4 views
0

Предположим, у меня есть следующие таблицы в sql.не удалось создать запрос цепи в sql

student 
name id 
alex 1 
felix 2 
hannah 3 
john 4 
jonas 5 


instructor 
name id 
alex 1 
felix 2 
hannah 3 
john 4 
jonas 5 
(ex)brad 8 
tom 9 
tonny 11 

instructor_lectures 
name id course_count 
alex 1 5 
felix 2 2 
hannah 3 0 
john 4 23 
jonas 5 12 
(ex)brad 8 1 
tom 9 11 
tonny 11 9 

Что я хочу делать;

- firstly, get the difference of instructor student tables according to the name which does not start with "(ex)" 
- and then list course_count of the result. 

Я имею в виду, сначала получить

name id 
tom 9 
tonny 11 

и затем

name id course_count 
tom 9 11 
tonny 11 9 

что я сделал до сих пор?

Я написал запрос на разницу и выберет запрос из инструкторов, но не смог объединить их.

SELECT NAME FROM instructor INSTR WHERE NOT EXISTS 
(
    SELECT * FROM student STU WHER INSTR.NAME = STU.NAME 
) 
AND INSTR.NAME NOT REGEXP '^(ex)' 

Этот запрос возвращает меня

name id 
tom 9 
tonny 11 

Теперь я хочу, чтобы получить course_count посмотрев таблицу instructor_lectures

SELECT NAME FROM instructor INSTR WHERE NOT EXISTS 
(
    SELECT * FROM student STU WHER INSTR.NAME = STU.NAME 
) 
AND INSTR.NAME NOT REGEXP '^(ex)' 
SELECT * FROM instructor_lectures INSTR_LECTURES WHERE INSTR.NAME = INSTR_LECTURES.NAME 

но это бросает ошибку. Где моя ошибка? Как я могу получить course_count результата первого разностного запроса?

+0

Какие СУБД вы используете? –

ответ

1
SELECT INSTR.NAME, INSTR.id, INSTR_LECTURES.COURSE_COUNT 
    FROM instructor INSTR, instructor_lectures INSTR_LECTURES 
WHERE NOT EXISTS (SELECT * FROM student STU WHER INSTR.NAME = STU.NAME) 
    AND INSTR.NAME NOT REGEXP '^(ex)' 
    and INSTR.NAME = INSTR_LECTURES.NAME 

использовать условие соединения, для получения информации о joins

+0

это хороший контакт. Я понимаю, спасибо. – mmu36478

Смежные вопросы