2010-09-28 5 views
0

Résultat requis: Le numéro d'immatriculation des voitures utilisées par les instructeurs du bureau de Glasgow, Bearsden. Les 3 tableaux pertinents que j'ai sont; (J'ai omis les informations de tableau non pertinentes, pour simplifier.) La base de données s'appelle easydriveRequête MySQL pour joindre plusieurs tables

Non ce n'est pas une tâche School ou UNI, c'est une question d'un manuel que nous avons reçu nous pouvons: apprendre à le faire, pas de points sont attribués pour cela, donc vous ne faites pas mes devoirs pour moi.

**++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 

donc je dois donc une jointure, je pense et je pense qu'il a besoin d'aller quelque chose le long de ces lignes mais je suis très confus.

SELECT car.rego 
FROM car 
WHERE staff.office=’Glasgow’ OR ‘Bearsden’ 

quelqu'un peut-il s'il vous plaît remplir le blan ks donc je peux apprendre à faire ceci, ai-je besoin de faire une nouvelle table?

Répondre

0

Vous interrogez le plus besoin probablement ressembler à ceci:

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

Notez que JOIN est synonyme d'un INNER JOIN dans MySQL.

+0

Oh dam ça a marché ... tout ce qui manquait était la carallocation ... car_allocation, j'aurais dû le voir plus tôt. – user460078

+0

Merci beaucoup pour votre aide. – user460078

0

En ce qui car_allocation est une table intermédiaire, il est plutôt préférable de le mettre dans la clause FROM et JOIN autres:

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) 

attention aux supports, ils conditions groupes.

ou

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

Si vous avez une énumération, vous pouvez utiliser l'opérateur IN.

Egalement JOIN signifie le même que INNER JOIN. Here's MySQL manual considering JOIN syntax

+0

@JoshD: Vous avez vu juste une version temporaire entre les modifications :) – abatishchev

+0

Lorsque vous avez écrit JOIN stuff sur A.stuff_id = stuff.stuff_ids, voulez-vous dire que le personnel de JOIN est sur A.staff_id = staff.staff_ids? Donc, embaucher du personnel, ou est-ce une table temporaire? – user460078

+0

http://www.mediafire.com/?et60n4xvp17kh61 si cela aide la base de données mysql 5.1. – user460078

0

Je ne l'ai pas testé mais cela devrait aider.

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

Ce qui vous manque, ce sont les jointures entre les tables. Vous devez vous connecter à la table intermédiaire pour connaître la relation entre les tables de personnel et de voiture.

+0

Un grand merci pour toutes vos suggestions. – user460078