2011-06-17 5 views
1

avoir un peu de mal avec cette requête. J'ai deux tables ...MySQL Query Two Table Joindre

Account - 
ResourceID (int) 
AccountID (int) (unique auto-inc) 

Resource - 
TextName (varchar) 
ResourceID (int) (unique auto-inc) 
CompanyID (int) 

Tout ce que j'ai est le AccountID et je dois faire une requête qui me dira le textName et ResourceID de tous les enregistrements de la table des ressources qui ont le même CompanyID que le dossier dans la table de compte qui a le même ResourceID et le AccountID que je fournis.

Voici ce que j'ai jusqu'ici et déjà il a réduit à une seule entrée ... et je n'ai même pas encore commencé à essayer d'incorporer le CompanyID encore.

SELECT r.ResId, r.FirstName, r.LastName 
FROM account a, resource r 
WHERE a.AccId='7' AND a.ResId = r.ResId 

Toute aide est très appréciée. Merci

+0

Y a-t-il un champ CompanyID dans la table Account? – Olaf

+0

Malheureusement non, cela rendrait beaucoup plus facile :) –

Répondre

2

Vous avez besoin d'une jointure automatique pour obtenir le partage des ressources similaires de la société!

SELECT rSameCompany.ResId, rSameCompany.FirstName, rSameCompany.LastName 
FROM resource r 
    INNER JOIN resource rSameCompany 
     ON r.CompanyID = rSameCompany.CompanyID 
    INNER JOIN account a 
     ON r.ResourceID = a.ResourceID 
     AND a.AccId='7' 
+0

Je crois que vous êtes sur la bonne voie ici. Mais cela tire deux du même disque. J'obtiens le même résultat que ma requête, mais deux fois ... qui est le ResID (et le nom) de l'enregistrement qui possède le AccountID dans la table de compte. –

+0

J'ai fait une erreur, ce n'est pas facile sans le tester :) Il faut travailler maintenant! –