2010-10-28 4 views
1

Possible en double:
SQL query multiple tablesBasic MySQL Table Join?

Je ces 2 tables:

ASSOCIATION_TABLE: [id, clé, nom, gestionnaire, bureau, banque, client]

et

OFFICE_TAB LE: [id, nom, adresse, téléphone]

Je suis actuellement cette requête pour obtenir un ensemble de données que j'ai besoin:

SELECT `name`, `key`, `office`, `manager`, `id` 
FROM `database`.`ASSOCIATION_TABLE` 
WHERE `association`.`customer`=4; 

Comment puis-je modifier cette requête pour afficher le nom de la OFFICE_TABLE , plutôt que l'ID? Je pense qu'une table join est ma solution, mais je suis sûr de quel type, ou comment exactement l'utiliser.

Merci d'avance.

Répondre

2
SELECT `name`, `key`, ot.name AS OFFICE_NAME, `manager`, `id` 
    FROM `ASSOCIATION_TABLE` at 
     LEFT OUTER JOIN OFFICE_TABLE ot 
     ON ot.id = at.office 
WHERE `association`.`customer`=4; 

Ceci est une jointure externe à OFFICE_TABLE. Votre jeu de résultats inclura tous les enregistrements du fichier ASSOCIATION_TABLE qui n'ont pas d'enregistrements dans OFFICE_TABLE.

Si vous ne souhaitez que pour retourner des résultats avec des enregistrements dans OFFICE_TABLE vous voulez une jointure interne, par exemple:

SELECT `name`, `key`, ot.name AS OFFICE_NAME, `manager`, `id` 
    FROM `ASSOCIATION_TABLE` at 
     INNER JOIN OFFICE_TABLE ot 
     ON ot.id = at.office 
WHERE `association`.`customer`=4; 
+1

+1: Vous étiez d'abord, mais la mienne était plus jolie: p connexes: http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of -sql-joins.html –

+0

beaucoup plus joli; merci pour le lien: D – bernie

0

En plus de ce que dit @Adam, vous pouvez jeter un oeil à la MySQL documentation officielle

Je voudrais également suggérer que vous regardez sur google pour un bon didacticiel SQL.

0
SELECT o.`name`, `key`, `office`, `manager`, `id` 
FROM `database`.`ASSOCIATION_TABLE` 
JOIN `database`.`OFFICE_TABLE` o 
USING (id) 
WHERE `association`.`customer`=4; 
+0

C'était rapide et sale, je vous recommande également de spécifier des alias pour chaque colonne et table que vous utilisez. –