2009-04-18 16 views
2

Je ne sais pas comment s'y prendre, mais j'ai besoin d'une aide urgente de votre part.MySql: Sélection à partir de plusieurs tables

J'ai deux tables à savoir States, Package_Details. Voici les détails de la table.

Etats

  • state_id
  • state_name

Package_Details

  • id
  • sender_state // état magasins avec carte d'identité nationale
  • // état receiver_state magasins avec carte d'identité nationale

Maintenant, je rencontre des problèmes construire une requête SQL qui sélectionner et afficher les enregistrements dans les Package_Details remplaçant le sender_state et receiver_state avec le state_name correspondant dans le tableau États.

Merci beaucoup pour votre temps.

Répondre

5

Vous avez besoin d'une jointure. Exemple:

SELECT p.id, s1.state_name AS sender, s2.state_name AS receiver 
    FROM 
     package_details p 
    JOIN states s1 ON (p.sender_state = s1.state_id) 
    JOIN states s2 ON (p.receiver_state = s2.state_id) 

Remarque comment vous pouvez les utilisations states deux fois dans la requête en lui attribuant un alias (states s1) et en utilisant les alias de se référer à la table.

Si vous avez besoin de le faire souvent, vous pouvez créer une vue.

La documentation de MySQL sur les jointures est ici: http://dev.mysql.com/doc/refman/5.0/en/join.html. La documentation sur la création de vues est ici: http://dev.mysql.com/doc/refman/5.0/en/create-view.html.

+0

Je suis sûr que vous connaissez les jointures. Ce que vous devez apprendre, ce sont des tables 'aliasing' dans les requêtes. Cela vous permet d'utiliser une table plusieurs fois dans une requête. –

+0

@Salman A: Je suppose que c'est dirigé vers @War Coder, comme dans son exemple? Je vais ajouter une note dans ma réponse à ce sujet. – derobert

Questions connexes