MySQL многостольный запрос на соединение

0

Необходимый результат: регистрационный номер автомобилей, используемых инструкторами в Глазго, офис 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’

Может кто-то заполнить пробелы, чтобы я мог узнать, как это сделать, мне нужно создать новую таблицу?

Теги:
join

3 ответа

0
Лучший ответ

Вы, скорее всего, должны выглядеть примерно так:

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.

  • 0
    О, черт возьми, это сработало ... все, чего не хватало, так это распределения ... car_allocation, я должен был увидеть это раньше.
  • 0
    Большое спасибо за вашу помощь.
0

Поскольку 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

  • 0
    @JoshD: Вы видели только временную версию между правками :)
  • 0
    Когда вы написали JOIN stuff ON A.stuff_id = stuff.stuff_ids, вы имеете в виду JOIN staff ON A.staff_id = staff.staff_ids? Итак, персонал на месте вещей, или это временный стол?
Показать ещё 2 комментария
0

Я не тестировал его, но это должно помочь.

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')

То, что вам не хватает, это объединение между таблицами. Вам нужно присоединиться к промежуточному столу, чтобы получить связь между персоналом и таблицами автомобилей.

  • 0
    Большое спасибо за все ваши предложения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню