Необходимый результат: регистрационный номер автомобилей, используемых инструкторами в Глазго, офис Bearsden. У меня есть 3 соответствующих таблицы; (Я просто опустил информацию о несетевой таблице, чтобы упростить это. База данных называется easydrive.
Нет, это не назначение школы или UNI, это вопрос из учебника, который нам дали, чтобы мы могли узнать, как это сделать, за это не начисляются оценки, поэтому вы не делаете моя домашняя работа для меня.
**++Staff++**
(PK) Staff ID
(FK) Address ID
(FK) Office
(FK) Car Allocation Number
First Name
Last Name
Position/Title
Office
**++CarAllocation++**
(PK) Car Allocation Number
(FK) Staff ID
(FK) Car ID
**++Car++**
(PK) Car ID
Car Rego
Итак, мне нужно, чтобы я присоединился к нему, и я думаю, что ему нужно идти что-то в этом направлении, но я очень смущен.
SELECT car.rego
FROM car
WHERE staff.office=’Glasgow’ OR ‘Bearsden’
Может кто-то заполнить пробелы, чтобы я мог узнать, как это сделать, мне нужно создать новую таблицу?
Вы, скорее всего, должны выглядеть примерно так:
SELECT first_name, last_name, car_rego
FROM staff
JOIN carallocation ON (carallocation.staff_id = staff.staff_id)
JOIN car ON (car.car_id = carallocation.car_id)
WHERE staff.office = 'Glasgow' OR staff.office = 'Bearsden';
Обратите внимание, что JOIN
является синонимом INNER JOIN
в MySQL.
Поскольку car_allocation
является промежуточной таблицей, лучше помещать ее в предложение FROM
и JOIN
others:
SELECT car.rego
FROM car_allocation A
JOIN car ON A.car_id = car.car_id
JOIN stuff ON A.stuff_id = stuff.stuff_id
AND (staff.office = 'Glasgow' OR staff.office = 'Bearsden' -- OR some another condition, etc)
Обратите внимание на скобки, они группируют условия.
или
SELECT car.rego
FROM car_allocation A
JOIN car ON A.car_id = car.car_id
JOIN stuff ON A.stuff_id = stuff.stuff_ids
AND staff.office IN ('Glasgow', 'Bearsden')
Если у вас есть перечисление, вы можете использовать оператор IN
.
Также JOIN
означает то же самое, что и INNER JOIN
. Здесь руководство MySQL с учетом синтаксиса JOIN
Я не тестировал его, но это должно помочь.
select car.rego
from car
inner join carrallocation ca on ca.carid = car.carid
inner join staff s on ca.staffid = s.staffid
where s.office in ('Glasgow', 'Bearsden')
То, что вам не хватает, это объединение между таблицами. Вам нужно присоединиться к промежуточному столу, чтобы получить связь между персоналом и таблицами автомобилей.