2013-07-25 4 views
1

J'ai une requête SQL en cours d'exécution, mais j'ai besoin de récupérer une autre donnée d'une troisième table dans la requête pour la facilité d'utilisation, mais je n'ai pas réussi à l'attraper.Joindre trois tables SQL?

Chaque table est essentiellement liée ensemble par tenant_id

(je présente mes excuses pour la mauvaise structure, je n'ai pas créé le DB)

TABLE: tenant_statements

tenant_id         solde         propriété         Date

TABLEAU: baux

lease_id         tenant_id         propriété         numéro_carte

TABLE: locataires

tenant_id         prenom         last_name         global_comment

Mon requête en cours:

SELECT * 
FROM tenant_statements t 
INNER JOIN (
SELECT * 
FROM leases 
GROUP BY tenant_id 
ORDER BY lease_id 
)l ON t.tenant_id = l.tenant_id 
WHERE t.date = '$date' 
AND t.property = '$property' 
ORDER BY t.balance DESC 

-moi de ce donner la réponse appropriée pour joindre les deux tables: leases et tenant_statements. $date et $property sont définies via une boucle de variables PHP et utilisées pour la présentation.

Ce que je tente de faire est également saisir tenants.global_comment et il a ajouté chaque résultat.

la sortie idéale sera:

tenant_statements t: t.balance, t.date

baux l: l.property, l.unit_number

locataires x: x, x.first_name .last_name, x.global_comment

Tout en une requête.

Quelqu'un peut-il me diriger dans la bonne direction? Je vous remercie!

+0

Dans la mesure du possible, il est préférable d'éviter le caractère générique pour l'instruction select ('SELECT * ...') – rfk

Répondre

1

Que diriez-vous quelque chose comme

SELECT * 
FROM tenant_statements t INNER JOIN 
     (
      SELECT * 
      FROM leases 
      GROUP BY tenant_id 
      ORDER BY lease_id 
     )l ON t.tenant_id = l.tenant_id INNER JOIN 
     tenants ts ON t.tenant_id = ts.tenant_id 
WHERE t.date = '$date' 
AND  t.property = '$property' 
ORDER BY t.balance DESC 
0

Bien que chaque jointure spécifications se joint à deux tables, de clauses peuvent contenir plusieurs spécifications jointure.Cela permet à plusieurs tables d'être jointes pour une seule requête.

SELECT t.tenant_id, 
t.balance, 
l.unit_number, 
l.property 
x.first_name, x.last_name, x.global_comment 


fROM tenant_statements t 
    INNER JOIN leases l ON l.tenant_id = t .tenant_id 
    INNER JOIN tenants x on x.tenant_id = t.tenant_id