2010-09-28 4 views
0

Необходимый результат: регистрационный номер автомобилей, используемых инструкторами в Глазго, офис Bearsden. 3 релевантные таблицы, которые у меня есть; (Я опустил информацию о несетевой таблице, чтобы упростить это. База данных называется easydrive.MySQL multi table join query

Нет, это не назначение школы или 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’ 

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

ответ

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

О дамба это сработало ... все, что не хватало, было carallocation ... car_allocation, я видел это раньше. – user460078

+0

Большое спасибо за вашу помощь. – user460078

0

Насколько car_allocation промежуточная таблица, это гораздо лучше, чтобы поместить его в FROM статьи и JOIN другие:

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. Here's MySQL manual considering JOIN syntax

+0

@JoshD: Вы видели только временную версию между изменениями :) – abatishchev

+0

Когда вы написали JOIN stuff ON A.stuff_id = stuff.stuff_ids, вы имеете в виду JOIN staff ON A.staff_id = staff.staff_ids? Так персонал на месте, или материал временный стол? – user460078

+0

http://www.mediafire.com/?et60n4xvp17kh61, если это поможет здесь база данных mysql 5.1. – user460078

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

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